うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【Unity】Animator の State 一覧を取得する

Animator の state 一覧を見るためには runtimeAnimatorController を AnimatorController にキャストすることで可能になります

AnimatorControllerUnityEditor.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

AnimationClipMotion を継承しているのでキャストすることで AnimationClip が取得できます

foreach (var layer in ac.layers)
{
    // state 一覧を表示する
    foreach (var state in layer.stateMachine.states)
    {
        var animationClip = state.state.motion as AnimationClip;
    }
}