// Get a reference to the Animator Controller:
UnityEditorInternal.AnimatorController ac = GetComponent<Animator>().runtimeAnimatorController as UnityEditorInternal.AnimatorController;
// Number of layers:
int layerCount = ac.GetLayerCount();
Debug.Log(string.Format("Layer Count: {0}", layerCount));
// Names of each layer:
for (int layer = 0; layer < layerCount; layer++) {
Debug.Log(string.Format("Layer {0}: {1}", layer, ac.GetLayerName(layer)));
}
// States on layer 0:
UnityEditorInternal.StateMachine sm = ac.GetLayerStateMachine(0);
List<UnityEditorInternal.State> states = sm.statesRecursive; // Also: sm.states
foreach (UnityEditorInternal.State s in states) {
Debug.Log(string.Format("State: {0}", s.GetUniqueName()));
}
有一些方法在新的版本(4.6)中已经过期,但基本思路不变,先获取AnimatorController,然后