我有一些预制件,每个预制件都有Animator组件和自己的Animator控制器。每个Animator控制器都有such simple structure with 2 states:
“空闲”状态在每个预制AnimatorController上只有1帧,“突出显示”状态长度在不同的预制AnimatorControllers上有所不同。 在某些代码片段中,我想在某些GameObjects(从预制实例化)上播放“ Highlight”状态,并在最长的GameObjects完成后进行一些操作。所以我需要知道每个状态的长度以找到最大长度。要播放并获取状态长度,请使用以下代码:
void Start() {
_animator = GetComponent<Animator>();
}
public float Highlight() {
_animator.Play("Highlight");
return _animator.GetCurrentAnimatorStateInfo(0).length;
}
问题在于,Highlight()方法有时会为某些Animator返回正确的“ Highlight”状态长度,但有时会返回0.0166(与“ Idle”状态一样为1帧的长度)。 所以我不明白为什么GetCurrentAnimatorStateInfo()有时不返回实际的当前状态。我的代码有什么问题,以及如何获得刚刚被Play()编辑过的状态的长度。