void FindAllAniInControl(UnityEditorInternal.StateMachine machine, List<AnimationClip> list) { for (int i = 0; i < machine.stateCount; i++) { var m = machine.GetState(i).GetMotion(); if (list.Contains(m as AnimationClip) == false) { list.Add(m as AnimationClip); } } for (int i = 0; i < machine.stateMachineCount; i++) { var m = machine.GetStateMachine(i); FindAllAniInControl(m, list); } }
static ControllerStateMachine ConverStateMachine(UnityEditorInternal.StateMachine stateMachine, ControllerState[] states) { return new ControllerStateMachine() { name = stateMachine.name, hash = Animator.StringToHash(stateMachine.name), states = states.Where(i => stateMachine.EnumerateStates().Any(j => j.uniqueNameHash==i.uniqueNameHash)).ToArray(), subStateMachines = Enumerable.Range(0, stateMachine.stateMachineCount).Select(i => ConverStateMachine(stateMachine.GetStateMachine(i),states)).ToArray() }; }