我有一个脚本,告诉我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");
}
答案 0 :(得分:1)
您正在将AnimatorStateInfo
的哈希值与剪辑的哈希值进行比较。您应该改用_animator.GetCurrentAnimatorClipInfo(0)
,并检查它返回的AnimatorClipInfo
对象的数组。它们每个都将具有.clip
属性。