Unity Animator.Play(stateName, layer, normalizedTime) 播放动画函数用法

原理

接口:

public void Play(string stateName, int layer = -1, float normalizedTime = float.NegativeInfinity);
参数 含义
stateName 动画状态机的某个状态名字
layer 第几层的动画状态机,-1 表示播放第一个状态或者第一个哈希到的状态
normalizedTime 从state动画进度的百分比(<100%)开始播放到结束

Unity Animator.Play 详解

案例

  1. 基于 Animator 制作一个Cube旋转的帧动画
    请添加图片描述
    在这里插入图片描述

  2. 在 Cube 上实现调用 Play(stateName,layer,normalizedTime) 脚本

    using UnityEngine;
    using UnityEngine.UI;
    
    public class BoxAnimator : MonoBehaviour {
          
          
        public Animator animator;
        public Button   btn1;
        public Button   btn2;
        
        public const float Percentage1 = 0.3f;
        public const float Percentage2 = 0.7f;
        
        void OnEnable() {
          
          
            btn1.onClick.AddListener(() => animator.Play("Rotate",-1, Percentage1));
            btn2.onClick.AddListener(() => animator.Play("Rotate",-1, Percentage2));
        }
    
        void OnDisable() {
          
          
            btn1.onClick.RemoveAllListeners();
            btn2.onClick.RemoveAllListeners();
        }
    }
    

    在这里插入图片描述
    在这里插入图片描述
    脚本挂在 cube 上,设置两个按钮分别从 30% 、70% 开始播放动画直到结束动画

  3. 看运行效果,可以选中 cube 查看动画状态机是如何播放的,方便理解
    请添加图片描述
    请添加图片描述

猜你喜欢

转载自blog.csdn.net/qq_36804363/article/details/129369606