- 有关当前或下一(动画)状态的信息。
- 变量
- fullPathHash: int, get{};
- 该状态的完整路径哈希,使用Animator.StringToHash生成哈希。
- public static int StringToHash(string name);//name: 要转换的ID字符串
- shortNameHash: int, {get;}
- 使用Animator.StringToHash生成哈希,哈希不包括父层的名称。
- normalizedTime: float, {get;}
- 状态的标准化时间。整数部分为状态已循环次数。小数部分为当前循环的百分比[0, 1]。
- length: float, {get;}
- 状态的当前持续时间。以“秒”为单位,当状态包括混合树(Blend Tree)时会有所不同。
- speed: float, {get;}
- 该动画的播放速度,1表示正常速度。
- 播放速度为负时,将从末尾开始播放动画。
- 可以理解为AnimatorState.speed。
- speedMultiplier: float, {get;}
- 该状态的速度乘数。
- 负值将反向播放动画。
- 如果没有为该AnimatorState设置速度参数(ANimatorState.speedParameter、AnimatorState.speedParameterActive),则默认值=1。
- tagHash: int, {get;}
- 状态的tag,使用Animator.stringToHash生成哈希。
- loop: bool, {get;}
- 状态是否循环,状态中所有动画都必须循环。
- fullPathHash: int, get{};
- 公共函数
- public bool IsName(string name);
- name: 是否匹配状态机中激活状态的名称。
- 名称采用Layer.Name形式,例如“Base.Idle”。
- public bool IsTag(string tag);
- tag: 是否匹配状态机中激活状态的标记。
- public bool IsName(string name);
- 判断动画是否播放完毕
using UnityEngine; public class Test3 : MonoBehaviour { private Animator ani; void Start() { ani = GetComponent<Animator>(); } void Update() { AnimatorStateInfo asi; asi = ani.GetCurrentAnimatorStateInfo(0);//必须在Update()里 if (asi.normalizedTime > 1 && asi.IsName(("MyPlay"))) { ani.SetInteger("MyPlay", 0);//播放完回到待机动画 } } }
- normalizedTime: [0, 1],0表示动作开始,1表示动作结束。