【Unity】Animator の State 一覧を取得する
Animator の state 一覧を見るためには runtimeAnimatorController を AnimatorController にキャストすることで可能になります
AnimatorController は UnityEditor.Animations のクラスなため、UniytEditor 上でしか動作させることはできません
var animator = AssetDatabase.LoadAssetAtPath<Animator>("Path"); var ac = _animator.runtimeAnimatorController as AnimatorController; foreach (var layer in ac.layers) { // state 一覧を表示する foreach (var state in layer.stateMachine.states) { } }
また、state に設定されている AnimationClip を確認する際には ChildAnimatorState.state.motion を利用します
motion は UnityEngine.Motion クラスですが
public sealed class AnimationClip : Motion
AnimationClip は Motion を継承しているのでキャストすることで AnimationClip が取得できます
foreach (var layer in ac.layers) { // state 一覧を表示する foreach (var state in layer.stateMachine.states) { var animationClip = state.state.motion as AnimationClip; } }