获取动画时长
public float GetClipLength(Animator animator, string clipName)
{
AnimationClip[] clips = animator.runtimeAnimatorController.animationClips;
foreach (AnimationClip clip in clips)
{
if (clip.name == clipName)
{
Debug.Log("clip.length = " + clip.length);
return clip.length;
}
}
return 0;
}
获取当前播放动画的归一化时间
Animator.GetCurrentAnimatorStateInfo(0).normalizedTime; // 值为1是动画的结尾。值为0.5是动画的中间。
在使用这个之前需要先判断下当前播放的动画名,特别是在切换动画状态的时候。否则可能获取的是其它动画的时间。当同一个动画播放多次的时候,获取的值会大于1
获取当前播放动画的名称
Animator.GetCurrentAnimatorClipInfo(0)[0].clip.name;
返回的名称是Motion里面的名称;
当处于动画切换的时候,返回的是前一个动画的名字
判断当前播放动画的名称
charaAni.GetCurrentAnimatorStateInfo(0).IsName("stand")
判断的名称是动画控制器界面的名称。