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までたどり着ける。