Unity-动画-动画回调函数接⼝StateMachineBehaviour
Unity-动画-动画接⼝StateMachineBehaviour
1. 简介
当你想在状态机的某个状态执⾏中⼲些什么的时候(增加状态机⾏为)
⽐如:播放⾳效,添加粒⼦特效,增加逻辑代码等等操作。
那么就可以试⼀试Unity封装好的回调函数接⼝:StateMachineBehaviour
想要添加(State machine behaviours)状态机⾏为到状态或⼦状态机,可以选中某个状态后在inspector中的Add Behaviour按钮。
2. 使⽤该动画回调接⼝的前置条件必须继承StateMachineBehaviour
脚本必须挂在到状态上
3. 回调函数接⼝⼀览OnStateEnter 进⼊该状态时调⽤OnStateUpdate 在该状态下每帧调⽤ (MonoBehaviour Updates 更新后)OnStateExit 在该状态结束退出时调⽤
OnStateMove 在Animator.OnAnimatorMove()执⾏后调⽤(普通动画开始播放后)⽤于实现处理和影响根运动的代码
OnStateIK 在Animator.OnAnimatorIK()执⾏后调⽤(⾻骼动画开始播放后)
4. 参数解释Animator animator 当前动画器,是这个状态机⾏为的引⽤。
AnimatorStateInfo stateInfo 当前状态的详细信息 int fullPathHash 当前状态的全路径哈希值int nameHash 当前状态名称的哈希值int shortNameHash 不包括⽗层名称的短名称哈希值float normalizedTime 状态的标准化时间float length 状态当前已经持续的时间float speed 动画播放速度(1为正常速度)float speedMultiplier 动画播放倍速int tagHash 标签的哈希值bool loop 当前状态是否循环bool IsName(string name)bool IsTag(string tag)
unity3d animationint layerIndex 是状态机⾏为状态的layer 层override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex){}
1override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex){}
1override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex){}
1override public void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex){}
1override public void OnStateIK(Animator animator, AnimatorStateInfo stateInfo, int layerIndex){}
1
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论