【发布时间】:2016-04-16 16:29:32
【问题描述】:
我正在使用以下结构:
(层)“基础层”--> (子状态)“Jump_Fall_Roll”--> (状态)“滚动”
static int rollState = Animator.StringToHash("What to put here??");
private Animator anim;
private AnimatorStateInfo currentBaseState;
void Start ()
{
anim = GetComponent<Animator>();
}
void FixedUpdate ()
{
currentBaseState = anim.GetCurrentAnimatorStateInfo(0);
if (currentBaseState.nameHash == rollState) {
Debug.Log ("ROLL nameHash worked"); //Not working
}
if (currentBaseState.IsName("Roll")) {
Debug.Log ("ROLL IsName worked"); //Working.......
}
}
我尝试了 nameHash 的父母/状态的所有可能组合,但它从未奏效......
名称应采用 Layer.Name 形式,例如“Base.Idle”。
AnimatorStateInfo.IsName doc from Unity
那么,为什么我的第一个案例不起作用?第二种情况如何运作?
我真的很困惑。
编辑
我的 Animator 视图的屏幕截图
我确实尝试过static int rollState = Animator.StringToHash("Base Layer.Roll");
然后Debug.Log (currentBaseState.nameHash + ", " + rollState);
会输出
1094782407,-1476868190
当我处于滚动状态时。 rollState NEVER = currentBaseState.nameHash.
我确实在空闲状态下对此进行了测试,效果非常好:
static int rollState = Animator.StringToHash("Base Layer.Idle");
我看不到子状态的结构,真令人沮丧。
【问题讨论】: