テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】Statemachinebehaviourの処理の実行順について

f:id:tsubaki_t1:20170202234325j:plain

Statemachinebehaviourをステートに貼り付けた際、Statemachinebehaviourはどのような順番で呼ばれるのか。

確認してみました。

Statemachinebehaviourを呼ばれる順番

ルールは、どうも下の通りっぽいです。

  • 親ステートが子ステートよりも先に呼ばれる
  • 上に配置したStatemachinebehaviourが下のStatemachinebehaviourより先に呼ばれる
  • 上にあるレイヤーが下にあるレイヤーより先に呼ばれる

f:id:tsubaki_t1:20170203002806j:plain

SubStateMachineのStatemachinebehaviour

意外と気づいてない人も居るかもしれませんが、SubStateMachineにもStatemachinebehaviourを設定する事が出来ます。

f:id:tsubaki_t1:20170202235609j:plain

その場合、OnStateMachineEnterが「SubStateMachineに到達した時に呼ばれる処理」で、「OnStateEnter」が子ステートマシンで変化が合った際に呼ばれます。

たとえば下のような図のステートとStatemachinebehaviourが合った場合、OnStateEnterはNewStateとHumanoidWalkが切り替わる度に、OnStateMachineEnterはトリガー「何らかの条件」が呼ばれ、AnyStateからStateMachineに切り替わる度に呼ばれます。

f:id:tsubaki_t1:20170203000910j:plain

f:id:tsubaki_t1:20170203001059j:plain

またSubStateMachineの子が現在のステートの場合、OnStateUpdateは常に呼ばれ続けます。

関連

unity3d.com

tsubakit1.hateblo.jp