public static void ApplyTo(this AnimatorTransition source, AnimatorTransition dest) { dest.mute = source.mute; dest.solo = source.solo; dest.name = source.name; dest.hideFlags = source.hideFlags; foreach (var condition in source.conditions) { dest.AddCondition(condition.mode, condition.threshold, condition.parameter); } }
private static void ApplyTransitionSettings(AnimatorTransition transition, AnimatorTransition newTransition) { newTransition.hideFlags = transition.hideFlags; newTransition.isExit = transition.isExit; newTransition.mute = transition.mute; newTransition.name = transition.name; newTransition.solo = transition.solo; foreach (var condition in transition.conditions) { newTransition.AddCondition(condition.mode, condition.threshold, condition.parameter); } }
private static void CopyTransitionParameters(AnimatorTransition srcTransition, AnimatorTransition dstTransition) { dstTransition.hideFlags = srcTransition.hideFlags; dstTransition.isExit = srcTransition.isExit; dstTransition.mute = srcTransition.mute; dstTransition.name = srcTransition.name; dstTransition.solo = srcTransition.solo; foreach (var srcCondition in srcTransition.conditions) { dstTransition.AddCondition(srcCondition.mode, srcCondition.threshold, srcCondition.parameter); } }
public static void CloneTo(this AnimatorTransition source, AnimatorTransition dest) { dest.mute = source.mute; dest.solo = source.solo; dest.name = source.name; dest.hideFlags = source.hideFlags; foreach (var condition in source.conditions) { dest.AddCondition(condition.mode, condition.threshold, condition.parameter); } // source.destinationState is ignored because it is resolved by parent // source.destinationStateMachine is ignored because it is resolved by parent }
static void CreateController() { // Creates the controller AnimatorController controller = AnimatorController.CreateAnimatorControllerAtPath("Assets/Animations/Motion.controller"); // Add Animation Clips AnimationClip clip = new AnimationClip(); clip.frameRate = 24; AssetDatabase.CreateAsset(clip, "Assets/Animations/Motion.anim"); AssetDatabase.SaveAssets(); // Add parameters controller.AddParameter("TransitionNow", AnimatorControllerParameterType.Trigger); controller.AddParameter("Reset", AnimatorControllerParameterType.Trigger); controller.AddParameter("GotoB1", AnimatorControllerParameterType.Trigger); controller.AddParameter("GotoC", AnimatorControllerParameterType.Trigger); // Add StateMachines AnimatorStateMachine rootStateMachine = controller.layers[0].stateMachine; AnimatorStateMachine stateMachineA = rootStateMachine.AddStateMachine("smA"); AnimatorStateMachine stateMachineB = rootStateMachine.AddStateMachine("smB"); AnimatorStateMachine stateMachineC = stateMachineB.AddStateMachine("smC"); // Add Clip // Add States AnimatorState stateA1 = stateMachineA.AddState("stateA1"); AnimatorState stateB1 = stateMachineB.AddState("stateB1"); AnimatorState stateB2 = stateMachineB.AddState("stateB2"); stateMachineC.AddState("stateC1"); AnimatorState stateC2 = stateMachineC.AddState("stateC2"); // don’t add an entry transition, should entry to state by default // Add clip stateA1.motion = clip; // Add Transitions AnimatorStateTransition exitTransition = stateA1.AddExitTransition(); exitTransition.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, "TransitionNow"); exitTransition.duration = 0; AnimatorStateTransition resetTransition = rootStateMachine.AddAnyStateTransition(stateA1); resetTransition.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, "Reset"); resetTransition.duration = 0; AnimatorTransition transitionB1 = stateMachineB.AddEntryTransition(stateB1); transitionB1.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, "GotoB1"); stateMachineB.AddEntryTransition(stateB2); stateMachineC.defaultState = stateC2; AnimatorStateTransition exitTransitionC2 = stateC2.AddExitTransition(); exitTransitionC2.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, "TransitionNow"); exitTransitionC2.duration = 0; AnimatorTransition stateMachineTransition = rootStateMachine.AddStateMachineTransition(stateMachineA, stateMachineC); stateMachineTransition.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, "GotoC"); rootStateMachine.AddStateMachineTransition(stateMachineA, stateMachineB); }