Animator 重置到起始帧在 Unity 动画系统中,动画播放完毕默认是停留在最后一帧的,当我们重置场景的时候,需要将动画重置到第一帧。而 Animation 和 Animator 组件中并没有 Reset 方法。本文主要提供了关于 Animation 和 Animator 动画重置的解决方法。
通过 Animator.Play 和 Animator.Update 播放来进行控制。
Animator.Play
- 函数原型
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. 将要播放动画状态的归一化时间。 |
Animator.Update
- 函数原型
void Update(float deltaTime);
- 参数列表
Parameters 参数 | Description 描述 |
---|---|
deltaTime | The time delta. 增量时间。 |
示例代码
public void animToStart() { //参数:动画名,层,时间 animator.Play("Take 001", -1 ,0f); animator.Update(0f); }Animaton 重置到起始帧
解决思路
通过设置动画的 AnimationState ,将其时间调整到0,从而达到重置动画的效果。
示例代码
public void ResetAni(Animation ani, string name) { AnimationState state = ani[name]; ani.Play(name); state.time = 0; ani.Sample(); state.enabled = false; }