Unity-Animator深入系列---StateMachineBehaviour状态机脚本学习

回到 Animator深入系列总目录

首先这个脚本必须继承自StateMachineBehaviour

public class MySMB : StateMachineBehaviour
{
    public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        base.OnStateEnter(animator, stateInfo, layerIndex);

        Debug.Log("!!!");
    }
}

然后切到Animator面板,选择状态机里的任意状态,点击Add Behaviour即可挂载

这时运行游戏,当状态机运行至Jump状态时,程序打出Log

注意

1.状态机脚本可以挂载到Layer上,但只会调用OnStateUpdate和OnStateEnter,不会调用OnStateMachineExit

2.状态机脚本也可以挂载到子状态机中,但只在退出子状态机时调用一次OnStateMachineExit,OnStateUpdate是每次都调用,OnStateEnter是每个内部状态进入的时候调用

3.OnStateMove不管动画有无根运动,是否打开根运动,都会调用,并且重写后托管原先的根运动

原文地址:https://www.cnblogs.com/hont/p/5093334.html