Unity Animator 之 重置动画指定刷新某一动画。在Unity中,由于涌动Animator动画机控制动画播放,有时候需要重置动画,或者需要直接由某个动画未播放前就直接切换到某一个动画,这时候怎么做呢?具体使用到 play 和 update 函数,具体如下

工具/原料
- Unity
- Animator
方法/步骤
- 1
打开Unity,新建一个空工程,具体如下图
- 2
向工程中导入某个带多个动画的模型,具体如下图
- 3
新建一个动画机Animator,把模型的动画添加进新建的Animator,并且添加导线,最好每个导线的都勾上 Has Exit Time 便于演示,具体如下图
- 4
把模型添加到场景中,并把之前新建的Animator添加到模型上,具体如下图
- 5
在工程中新建一个脚本“AnimatorResetAnimation”,双击打开进行脚本编辑,具体如下图
- 6
“AnimatorResetAnimation”的脚本具体代码和代码说明如下图
- 7
“AnimatorResetAnimation”的脚本具体内容如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AnimatorResetAnimation : MonoBehaviour {
private Animator anim; // 设置动画机参数
// Use this for initialization
void Start () {
// 获取动画机
anim = this.gameObject.GetComponent<Animator>();
}
// Update is called once per frame
void Update () {
// 按下 A 键 重置动画为 Idle
if (Input.GetKeyDown(KeyCode.A)) {
ResetAnimator("Idle");
}
}
/// <summary>
/// 进行重置动画
/// </summary>
/// <param name="AnimationName">该动画的名称</param>
private void ResetAnimator(string AnimationName)
{
// 1、设置动画机播放的动画名称
// 2、设置为最初的动画名称即重置动画
// 3、Update(0)即是刷新 0 层的 动画机,默认新建的动画在 0 层
anim.Play(AnimationName);
anim.Update(0);
}
}
- 8
脚本编译正确,回到Unity,把脚本挂载到模型上,具体如下图
- 9
运行场景,在动画运行到某个动画途中,按下 A 键,动画立即被重置切回来(其中不会等到动画播完才切换,是立即切回来),具体如下图
END
注意事项
- 您的支持,是我们不断坚持知识分享的动力,若帮到您,还请帮忙投票有得;若有疑问,请留言
- 这种重置切换到某一个动画与参数控制的区别就是能立即切换,问不是等到动画完成后切换