Unity5.0的改动还是蛮大的,而且推出了免费的个人版,所以建议大家最好都能跟进新版本。Unity5新增了UnityEditor.Animations.AnimatorController,他提供了访问AnimatorController下面的状态机和子状态的接口,通过这些接口我们可以访问到具体的AnimationClip。以下是访问具体的AnimationClip的源码:
//从一个Animator中获取所有的Animation
static void FindAllAniInControl(UnityEditor.Animations.AnimatorController control, List<AnimationClip> list)
{
for (int i = 0; i < control.layers.Length; i++)
{
var layer = control.layers[i];
FindAllAniInControl(layer.stateMachine, list);
}
}
static void FindAllAniInControl(UnityEditor.Animations.AnimatorStateMachine machine, List<AnimationClip> list)
{
for (int i = 0; i < machine.states.Length; i++)
{
var m = machine.states[i].state.motion;
if (list.Contains(m as AnimationClip) == false)
{
list.Add(m as AnimationClip);
}
}
for (int i = 0; i < machine.stateMachines.Length; i++)
{
var m = machine.stateMachines[i].stateMachine;
FindAllAniInControl(m, list);
}
}