Interface to control AnimatorOverrideController.
AnimatorOverrideController is used to override clips from a controller to specialize some animations for a given avatar.
Swapping Animator.runtimeAnimatorController with an AnimatorOverrideController based on the same AnimatorController at runtime doesn't reset state machine's current state.
#pragma strict public class SetupAnimatorOverrideController extends MonoBehaviour { public function GetEffectiveController(animator: Animator) { var controller: RuntimeAnimatorController = animator.runtimeAnimatorController; var overrideController: AnimatorOverrideController = controller as AnimatorOverrideController; while ( overrideController != null ) { controller = overrideController.runtimeAnimatorController; overrideController = controller as AnimatorOverrideController; } return controller; } public function OverrideAnimationClip(name: String, clip: AnimationClip) { var animator: Animator = GetComponent.<Animator>(); var overrideController: AnimatorOverrideController = new AnimatorOverrideController(); overrideController.runtimeAnimatorController = GetEffectiveController(animator); overrideController[name] = clip; animator.runtimeAnimatorController = overrideController; } }
using UnityEngine;
public class SetupAnimatorOverrideController : MonoBehaviour { public RuntimeAnimatorController GetEffectiveController(Animator animator) { RuntimeAnimatorController controller = animator.runtimeAnimatorController;
AnimatorOverrideController overrideController = controller as AnimatorOverrideController; while (overrideController != null) { controller = overrideController.runtimeAnimatorController; overrideController = controller as AnimatorOverrideController; }
return controller; }
public void OverrideAnimationClip(string name, AnimationClip clip) { Animator animator = GetComponent<Animator>();
AnimatorOverrideController overrideController = new AnimatorOverrideController(); overrideController.runtimeAnimatorController = GetEffectiveController(animator); overrideController[name] = clip; animator.runtimeAnimatorController = overrideController; } }
clips | Returns the list of orignal clip from the controller and their override clip. |
runtimeAnimatorController | The Controller that the AnimatorOverrideController overrides. |
this[string] | Returns either the overriding clip if set or the original clip named name. |
hideFlags | Should the object be hidden, saved with the scene or modifiable by the user? |
name | The name of the object. |
animationClips | Retrieves all AnimationClip used by the controller. |
GetInstanceID | Returns the instance id of the object. |
ToString | Returns the name of the game object. |
Destroy | Removes a gameobject, component or asset. |
DestroyImmediate | Destroys the object obj immediately. |
DontDestroyOnLoad | Makes the object target not be destroyed automatically when loading a new scene. |
FindObjectOfType | Returns the first active loaded object of Type type. |
FindObjectsOfType | Returns a list of all active loaded objects of Type type. |
Instantiate | Clones the object original and returns the clone. |
bool | Does the object exist? |
operator != | Compares if two objects refer to a different object. |
operator == | Compares two object references to see if they refer to the same object. |