原理
接口:
public void Play(string stateName, int layer = -1, float normalizedTime = float.NegativeInfinity);
参数 | 含义 |
---|---|
stateName | 动画状态机的某个状态名字 |
layer | 第几层的动画状态机,-1 表示播放第一个状态或者第一个哈希到的状态 |
normalizedTime | 从state动画进度的百分比(<100%)开始播放到结束 |
Unity Animator.Play 详解
案例
-
基于 Animator 制作一个Cube旋转的帧动画
-
在 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% 开始播放动画直到结束动画 -
看运行效果,可以选中 cube 查看动画状态机是如何播放的,方便理解