Сообщение об ошибке при вызове Unity Animator.Play(): Invalid Layer -1?
Я пытаюсь сделать простую анимацию с помощью простого конечного автомата, но Unity выводит сообщение об ошибке:
Неверный индекс слоя '-1' UnityEngine.Animator:Play(String, Int32, Single)
Я проверил, что мой конечный автомат аниматора находится в "Базовом слое", который по умолчанию должен иметь ID = -1.
Кроме того, я распечатал все идентификаторы слоев в моих играх, и все они равны "-1", и я не уверен, что это правильный ответ, потому что я думал, что каждый слой должен иметь уникальный (или разные) идентификатор?
Однако, несмотря на это, Unity, к сожалению, все еще печатает ту же ошибку, что и выше.
Я использую последнюю версию Unity 5.5.2
Вот код:
using UnityEngine;
public class Thanh_Space_Man : MonoBehaviour {
public Animator anim;
// Use this for initialization
void Start ()
{
anim = GetComponent<Animator> ();
}
// Update is called once per frame
void Update ()
{
if(Input.GetKeyDown("1"))
{
anim.Play ("Run_Rifle_Foreward", -1, 0f);
}
if(Input.GetKeyDown("2"))
{
anim.Play ("Idle_Rifle_01", -1, 0f);
}
}
}
К вашему сведению: я новичок в Unity.:-)
1 ответ
Это значения, которые я получаю при использовании LayerMask.NameToLayer, где "CustomLayer" - это слой, который я создал вручную в менеджере " Теги и слои".
Debug.Log(LayerMask.NameToLayer("asd")); // => -1
Debug.Log(LayerMask.NameToLayer("UI")); // => 5
Debug.Log(LayerMask.NameToLayer("CustomLayer")); // => 8
Debug.Log(LayerMask.NameToLayer("customlayer")); // => -1
Debug.Log(LayerMask.NameToLayer("Default")); // => 0
Обновить:
ОП обнаружил проблему:
Я только что выяснил, что ошибка в том, что мне было неправильно написано имя состояния анимации, когда я вызвал Animator.Play(). После того, как я использую правильное название штата, тогда он работает нормально. Еще интереснее то, что независимо от того, передаю ли я идентификатор слоя как 0 или -1, когда я вызываю Animator.Play(), он работает в обоих случаях.