【发布时间】:2017-08-18 05:33:25
【问题描述】:
我正在尝试用一个简单的状态机做一个简单的动画,但是 Unity 打印出一条错误消息:
层索引“-1”无效 UnityEngine.Animator:Play(String, Int32, Single)
我已经验证我的动画状态机位于“基础层”,默认情况下它的 ID = -1。
另外,我已经打印出了我的游戏中的所有层 ID,它们都是“-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 的初学者。 :-)
【问题讨论】:
-
动画状态肯定拼写正确吗?即“Run_Rifle_Forward”。这必须与动画状态之一完全相同。
-
是的,拼写正确。感谢您的评论。
-
-1 表示找不到,我想。这意味着当您打印它时,您做错了。我也犯了同样的错误!我认为第一层从 1 开始。
-
查看方法如下:
LayerMask.NameToLayer("UI")--> 5 -
@Fredrik:从这个 Unity 文档 docs.unity3d.com/ScriptReference/Animator.Play.html 中,它显示方法 Play() 将 -1 作为图层的默认参数。