UnityEditorUnityのエディタ拡張で、AnimatorControllerの現在のステート名を取得したりステートの切り替わりを監視したりする方法をまとめました。使う関連Unity2019.3.0やりたいことUnityのAnimatorで「今どのステートにいるか」をチェックするには以下のように書く必要があります。animator;animator.GetCurrentAnimatorStateInfo(0).IsName("Move");この方法には事前にステート名を知っておく必要があったり、すべてのステート名の配列を得られなかったりという欠点があります。今のステート名を得るのに全ステート名をIsName()でチェックする必要があったりと不便です。そこでこの記事ではこの欠点を解消してAnimatorを使いやすくしてみます。全ステート名を取得するまず全ステート名を取得する必要があります。これはランタイムでは行えないので、エディタ上から取得します。}}これを以下のように使うとすべてのステートとそのフルパスを得られます。result);ステート名をシリアライズしておくためのStateMachineBehaviour前節でエディタ上からは全ステートを取得できるようになりました。ランタイムで使うことが目的なので、これをStateMachineBehaviourにシリアライズして使うことにします。}}_stateFullPathsにシリアライズしておくことで、現在のステート名や、ステート変化時のコールバックが得られます。AnimatorStateEventのセットアップを自動化さて最後に前節のAnimatorStateEventを自動的にセットアップされるようにします。Selection.selectionChangedを使ってAnimatorControllerやそのサブアセット(LayerやState)の選択が解除されたときにそのAnimatorControllerのレイヤーにAnimatorStateEventをアタッチしてセットアップします。}}ここまでで、AnimatorControllerのレイヤーに自動的にAnimatorStateEventがアタッチされ初期化されるようになりました。使う前節の通りセットアップは自動的に行われるので、あとは下記のようにして使うだけです。»プロフィールUnityエンジニア。グラフィックスへの興味が強めです。インストールから基本的な使い方・注意点まとめ【Unity】【エディタ拡張】テクスチャを指定したUV座標で切り取って保存する【Unity】指定したアセットのAssetBundle名を取得する【Unity】【シェーダ】スクリプトからVP行列を渡してシェーダで座標変換に使う【Unity】【シェーダ】FloatやVectorをリニアライズ対象にするGammaアトリビュート月別アーカイブはてなブログをはじめよう!halya_11さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。