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

工具/原料

  • Unity
  • Animator

方法/步骤

  1. 1

    打开Unity,新建一个空工程,具体如下图

  2. 2

    向工程中导入某个带多个动画的模型,具体如下图

  3. 3

    新建一个动画机Animator,把模型的动画添加进新建的Animator,并且添加导线,最好每个导线的都勾上 Has Exit Time 便于演示,具体如下图

  4. 4

    把模型添加到场景中,并把之前新建的Animator添加到模型上,具体如下图

  5. 5

    在工程中新建一个脚本“AnimatorResetAnimation”,双击打开进行脚本编辑,具体如下图

  6. 6

    “AnimatorResetAnimation”的脚本具体代码和代码说明如下图

  7. 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. 8

    脚本编译正确,回到Unity,把脚本挂载到模型上,具体如下图

  9. 9

    运行场景,在动画运行到某个动画途中,按下 A 键,动画立即被重置切回来(其中不会等到动画播完才切换,是立即切回来),具体如下图

    END

注意事项

  • 您的支持,是我们不断坚持知识分享的动力,若帮到您,还请帮忙投票有得;若有疑问,请留言
  • 这种重置切换到某一个动画与参数控制的区别就是能立即切换,问不是等到动画完成后切换
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。