在animationClips中找不到runtimeAnimationController哈希

时间:2019-01-31 21:53:33

标签: c# unity3d

我有一个脚本,告诉我runtimeAnimationController当前正在为角色播放哪个动画剪辑。

我正在使用此脚本,在某些角色上没有任何问题,但是现在我有一个角色,在动画剪辑列表中找不到当前动画的哈希。

我不知道是什么原因引起的。

我认为我的代码绝对安全。 当我在Visual Studio中创建断点并检查动画剪辑列表时,可以看到当前正在播放的哈希实际上不在列表中。

当前正在播放的动画的哈希值也不为0,并且当动画控制器播放其他动画时,它的确会更改。

有人知道为什么在找不到哈希的情况下可能会发生这种情况吗?

我的意思是,当播放动画时,该动画必须在列表动画片段中,对吧?

非常感谢您的帮助!

private void pTellAnim()
{

    AnimatorStateInfo stateInfo = _animator.GetCurrentAnimatorStateInfo(0);
    int iCurrentAnimationHash = stateInfo.shortNameHash;

    foreach (AnimationClip nClip in _animator.runtimeAnimatorController.animationClips)
    {
        int iHash = Animator.StringToHash(nClip.name);
        if (iHash == iCurrentAnimationHash)
        {
            Debug.Log("Currently playing " + nClip.name + "\n");
            return;
        }
    }

    Debug.Log("Clip not found for hash " + iCurrentAnimationHash.ToString() + "!!!!\n");
}

1 个答案:

答案 0 :(得分:1)

您正在将AnimatorStateInfo的哈希值与剪辑的哈希值进行比较。您应该改用_animator.GetCurrentAnimatorClipInfo(0),并检查它返回的AnimatorClipInfo对象的数组。它们每个都将具有.clip属性。