Я особо в кодирование не шарю, посмотрел в интернете как сделать так что бы двери открывались и закрывались по нажатию определенной кнопки с определённого радиуса на телефоне, не пк. Короче, добавил кнопку, вроде все работает классно, есть дверь, уже сделанная анимация закрытие и открытие двери, есть код который отвечает за радиус (кнопка появляется только тогда когда я подхожу близко к двери), вроде все работает, нажимаю и бац анимации тупо нету, вообще нету. Ошибка вот такая вот (кстати ошибка помешается в желтом треугольнике, не в красном):
UnityEngine.Animator:Play (string,int,single)
Door:PlayAnimationDoor () (at Assets/Door System Mobile/Door.cs:25)
DoorRaycast:Door () (at Assets/Door System Mobile/DoorRaycast.cs:75)
UnityEngine.EventSystems.EventSystem:Update ()
Вот ошибка в красном треугольника так скажем:
EndLayoutGroup: BeginLayoutGroup must be called first.
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)
Код<br>
using System.Collections;<br>
using System.Collections.Generic;<br>
using UnityEngine;<br>
using UnityEngine.UI;<br>
<br>
public class DoorRaycast : MonoBehaviour<br>
{<br>
[SerializeField] private int rayLength = 5;<br>
[SerializeField] private LayerMask layerMaskInteract;<br>
[SerializeField] private string excludelayerName = null;<br>
<br>
[SerializeField] private GameObject doorButton;<br>
<br>
private Door raycastedDoor;<br>
<br>
[SerializeField] private Image Crosshair = null;<br>
private bool isCrosshairActive;<br>
private bool doOnce;<br>
<br>
private const string interactableTag = "Door";<br>
<br>
private void Update()<br>
{<br>
RaycastHit hit;<br>
Vector3 fwd = transform.TransformDirection(Vector3.forward);<br>
<br>
int mask = 1 << LayerMask.NameToLayer(excludelayerName) | layerMaskInteract.value;<br>
<br>
if(Physics.Raycast(transform.position, fwd, out hit, rayLength, mask))<br>
{<br>
// Door<br>
if (hit.collider.CompareTag(interactableTag))<br>
{<br>
if (!doOnce)<br>
{<br>
raycastedDoor = hit.collider.gameObject.GetComponent();<br>
CrosshairChange(true);<br>
}<br>
<br>
doorButton.SetActive(true);<br>
isCrosshairActive = true;<br>
doOnce = true;<br>
}<br>
else<br>
{<br>
doorButton.SetActive(false);<br>
}<br>
}<br>
<br>
else<br>
{<br>
if (isCrosshairActive)<br>
{<br>
CrosshairChange(false);<br>
doOnce = false;<br>
}<br>
}<br>
}<br>
<br>
void CrosshairChange(bool on)<br>
{<br>
if(on && !doOnce)<br>
{<br>
Crosshair.color = Color.red;<br>
}<br>
else<br>
{<br>
Crosshair.color = Color.white;<br>
isCrosshairActive = false;<br>
}<br>
}<br>
<br>
public void Door()<br>
{<br>
raycastedDoor.PlayAnimationDoor();<br>
}<br>
}<br>
<br>
using System.Collections;<br>
using System.Collections.Generic;<br>
using UnityEngine;<br>
<br>
public class Door : MonoBehaviour<br>
{<br>
private Animator doorAnim;<br>
<br>
private bool doorOpen = false;<br>
<br>
private void Awake()<br>
{<br>
doorAnim = gameObject.GetComponent();<br>
}<br>
<br>
public void PlayAnimationDoor()<br>
{<br>
if (!doorOpen)<br>
{<br>
doorAnim.Play("Open", 0, 0.0f);<br>
doorOpen = true;<br>
}<br>
else<br>
{<br>
doorAnim.Play("Close", 0, 0.0f);<br>
doorOpen = false;<br>
}<br>
}<br>
}<br>