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 的初学者。:-)

4

1 回答 1

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

更新:

OP发现了问题:

我刚刚发现错误是我在调用 Animator.Play() 时拼错了动画状态的名称。在我使用正确的州名后,它就可以正常工作了。更有趣的是,无论我将 Layer ID 传递为 0 还是 -1,当我调用 Animator.Play() 时,它都适用于这两种情况。

于 2017-03-27T07:22:38.100 回答