Сообщение об ошибке при вызове 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(), он работает в обоих случаях.

Другие вопросы по тегам