現在開いているアニメーション コントローラにアクセスし、アニメーション トランジションを破棄/作成/変更するエディタ メニュー項目を作成したいと考えています。
基本的に、現在開いているアニメーター コントローラーのすべてのアニメーション状態/クリップを反復処理し、それらの名前に基づいて特定のトランジションを作成し、すべてのクリップの再生速度を調整する必要があります。
私はこのコードスニペットを持っています:
UnityEditorInternal.AnimatorController ac = GetComponent<Animator>().runtimeAnimatorController as UnityEditorInternal.AnimatorController;
int numLayers = ac.layerCount;
for(int i = 0; i<numLayers; i++){
UnityEditorInternal.AnimatorControllerLayer layer = ac.GetLayer(i);
Debug.Log ("Layer " + i + " is: " + layer.name + " and has " + layer.stateMachine.stateCount + " states");
UnityEditorInternal.StateMachine sm = layer.stateMachine;
for(int n = 0; n<sm.stateCount; n++){
UnityEditorInternal.State state = sm.GetState(n);
Debug.Log ("State " + state.name + " is " + state.GetHashCode());
UnityEditorInternal.Transition[] list = sm.GetTransitionsFromState(state);
for(int j = 0; j<list.Length; j++){
UnityEditorInternal.Transition transition = list[j];
Debug.Log ("Transition: " + transition.name + " is " + transition.GetHashCode());
}
}
}
ただし、Unity5 (Unity 4 用に作成された可能性が最も高い) ではコンパイルされず、Unity 5 関数を使用して現在開いている AnimatorController を取得する方法がわかりません。
アニメーターコントローラークラスは として定義されているようですUnityEditor.Animations.AnimatorController
が、現在開いているものを取得する方法がわかりません。
何かアドバイス?