调用 Unity Animator.Play() 时出现错误消息:图层 -1 无效



我正在尝试使用简单的状态机制作简单的动画,但 Unity 打印出一条错误消息:

无效的图层索引 '-1'UnityEngine.Animator:Play(String, Int32, Single(

我已经验证了我的动画器状态机位于"基础层"中,默认情况下,该层的ID = -1。

此外,我已经打印出了游戏中的所有层 ID,它们都是"-1",我不确定这是否是正确的答案,因为我认为每个层都应该有一个唯一(或不同(的 ID?

但是,不幸的是,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的初学者。

这些是我在使用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

更新:

OP 发现了问题:

我刚刚发现错误是当我调用 Animator.Play(( 时,我拼写了错误的动画状态名称。在我使用正确的状态名称后,它工作正常。更有趣的是,无论我传入的图层 ID 是 0 还是 -1,当我调用 Animator.Play(( 时,它在这两种情况下都有效。

最新更新