在 Unity 动画系统中,动画播放完毕默认是停留在最后一帧的,当我们重置场景的时候,需要将动画重置到第一帧。而 Animation 和 Animator 组件中并没有 Reset 方法。本文主要提供了关于 Animation 和 Animator 动画重置的解决方法。
通过 Animator.Play 和 Animator.Update 播放来进行控制。
Animator.Play
Animator.Update
void Play(string stateName, int layer = -1, float normalizedTime = float.NegativeInfinity);
Parameters 参数
Description 描述
stateName
The name of the state the will be played.
将要播放的动画状态名字。
layer
The layer where the state is.
动画状态所在的层。
normalizedTime
The normalized time at which the state will play.
将要播放动画状态的归一化时间。
void Update(float deltaTime);
deltaTime
The time delta.
增量时间。
public void animToStart(){ //参数:动画名,层,时间 animator.Play("Take 001", -1 ,0f); animator.Update(0f);}
通过设置动画的 AnimationState ,将其时间调整到0,从而达到重置动画的效果。
public void ResetAni(Animation ani, string name) { AnimationState state = ani[name]; ani.Play(name); state.time = 0; ani.Sample(); state.enabled = false; }