万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

AnimatorからAnimatorControllerを取得するまで Unity C#


 ↓

 ↓

            Animator animator = selectedObject.GetComponent<Animator>();
            RuntimeAnimatorController runtimeAnimatorController = animator.runtimeAnimatorController;
            Debug.Log (runtimeAnim

のままだと、まだruntimeAnimatorControllerはRuntimeAnimatorController型だ。
AnimatorController型を取りたいが、

“ゲーム開発手法の民主化を謳っているUnityは、これをするのに

UnityEditorInternal.AnimatorController ac = runtimeAnimatorController as UnityEditorInternal.AnimatorController;

を行う。
すると、この「ac」変数に入る。

その後

            int layerCount = ac.layerCount;

            for(int i = 0; i<layerCount; i++)
            {
                UnityEditorInternal.AnimatorControllerLayer layer = ac.GetLayer(i);
                string layerName = layer.name;
                UnityEditorInternal.StateMachine sm = layer.stateMachine;

                for(int n = 0; n<sm.stateCount; n++)
                {
                    UnityEditorInternal.State state = sm.GetState(n);
                    Motion motion = state.GetMotion ();
                    AnimationClip aniClip = motion as AnimationClip;
                    Debug.Log (aniClip.name);
                }
            }

とやればやっとMotion型のmotionからAnimationClipまでたどり着ける。