我正在尝试使用简单的状态机制作简单的动画,但 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(( 时,它在这两种情况下都有效。