首先這個腳本必須繼承自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不管動畫有無根運動,是否打開根運動,都會調用,並且重寫后托管原先的根運動
