デジタルな日々

※Editorのみ アニメーターコントローラーのステート名をぜんぶ取得する(Unity5.1)


 

※書いてから気付きました、Editor使ってるからEditor上でしか動かない…!!!ごめんなさい…

 

 

アニメーションの管理が楽々なアニメーターコントローラー(Animator Controller)

アニメーターコントローラー

 

スクリプトから「SetBool()」とか「SetFloat」 でパラメータをいじってやることでアニメーしションを遷移させたり変化させたりすることができます。

 

「animator.Play(“hogehoge”);」で任意のステートを再生させることもできます。

この場合、ステート名を事前に取得できると便利そうです。

 

現在再生中のステート名は「Animator.GetCurrentAnimatorStateInfo」で「AnimatorStateInfo」を取得して、ステート名とか再生位置を見ることができるのですが…

 

再生していないステートの情報をとってくるのは意外と面倒でした!

しかもUnity5.0からAPIが色々と変わっていて…地味に苦労しました…

 

 

これをさっきのAnimatorControllerで実行すると…

アニメーターコントローラー

 

ステート名取得log

 

こんな感じで出力されます。

このやり方だとBasic Layer内のsub-StateMachineは取得されないようです。

今回の自分の目的ではsubじゃないやつのみをチェックしたかったのでちょうど良かったのですが、

そこも出したい場合は「ChildAnimatorStateMachine」とかを使えばいいんでしょうか…?

 

あと、testレイヤーが全く出力されていませんが、これはステートがあるもののみをDebug.Logしていたので、ステートのないtestレイヤーが出なかっただけです。

レイヤー自体はちゃんと認識しているのでコードを書き換えればちゃんと出ると思います。

 

コメントを残す