【Unity】AnimatorControllerにScriptからStateMachineBehaviourをアタッチする

StateMachineBehaviourを継承したクラスをAnimatorControllerにアタッチすると、Animatorの状態遷移を受け取って処理を実行できるようになります。

詳細はこのあたりを。
qiita.com

GUI上でアタッチする場合はAnimatorウィンドウで任意のレイヤーにD&Dするだけですが、これをスクリプトでやる場合、以下のようになります。

using UnityEditor.Animations;
(略)
var controller = AnimatorController.CreateAnimatorControllerAtPath ("Assets/Resources/TestAnimatorController.controller");
controller.layers [0].stateMachine.AddStateMachineBehaviour<StateMachineExample> ();

StateMachineExampleがStateMachineBehaviourを継承したクラスです。
今回はlayersの0個目を指定しているので、特にいじってなければBase Layerを示します。
自身でレイヤーを追加して、そのレイヤーの状態遷移を受け取りたい場合はindexを変えてあげる感じ。

既存のAnimatorControllerに対して実行するのであれば3行目を以下のように変えてやればよいだけです。

var controller = AssetDatabase.LoadAssetAtPath<AnimatorController> ("Assets/Resources/TestAnimatorController.controller");

うむ。

サーバサイドエンジニアからジョブチェンジして最近Unityを触ってるんですが、このブログでは全然扱ってなかったのでぼちぼち書いていきたいところ。
気まぐれでQiitaにも投稿してたりします。
qiita.com

スポンサーリンク