AnimatorController

class in UnityEditor.Animations

/

继承自:RuntimeAnimatorController

切换到手册

描述

动画控制器 (Animator Controller) 通过具有状态机(由参数控制)的层来控制动画。

using UnityEngine;
using UnityEditor;
using UnityEditor.Animations;
using System.Collections;

// Create a menu item that causes a new controller and statemachine to be created.

public class SM : MonoBehaviour { [MenuItem("MyMenu/Create Controller")] static void CreateController() { // Creates the controller var controller = UnityEditor.Animations.AnimatorController.CreateAnimatorControllerAtPath("Assets/Mecanim/StateMachineTransitions.controller");

// Add parameters controller.AddParameter("TransitionNow", AnimatorControllerParameterType.Trigger); controller.AddParameter("Reset", AnimatorControllerParameterType.Trigger); controller.AddParameter("GotoB1", AnimatorControllerParameterType.Trigger); controller.AddParameter("GotoC", AnimatorControllerParameterType.Trigger);

// Add StateMachines var rootStateMachine = controller.layers[0].stateMachine; var stateMachineA = rootStateMachine.AddStateMachine("smA"); var stateMachineB = rootStateMachine.AddStateMachine("smB"); var stateMachineC = stateMachineB.AddStateMachine("smC");

// Add States var stateA1 = stateMachineA.AddState("stateA1"); var stateB1 = stateMachineB.AddState("stateB1"); var stateB2 = stateMachineB.AddState("stateB2"); stateMachineC.AddState("stateC1"); var stateC2 = stateMachineC.AddState("stateC2"); // don’t add an entry transition, should entry to state by default

// Add Transitions var exitTransition = stateA1.AddExitTransition(); exitTransition.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, "TransitionNow"); exitTransition.duration = 0;

var resetTransition = rootStateMachine.AddAnyStateTransition(stateA1); resetTransition.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, "Reset"); resetTransition.duration = 0;

var transitionB1 = stateMachineB.AddEntryTransition(stateB1); transitionB1.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, "GotoB1"); stateMachineB.AddEntryTransition(stateB2); stateMachineC.defaultState = stateC2; var exitTransitionC2 = stateC2.AddExitTransition(); exitTransitionC2.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, "TransitionNow"); exitTransitionC2.duration = 0;

var stateMachineTransition = rootStateMachine.AddStateMachineTransition(stateMachineA, stateMachineC); stateMachineTransition.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, "GotoC"); rootStateMachine.AddStateMachineTransition(stateMachineA, stateMachineB); } }

变量

layers控制器中的层。
parameters用于在脚本和控制器之间通信的参数。例如,它们用于驱动过渡和混合树。

构造函数

AnimatorController构造函数。

公共函数

AddEffectiveStateMachineBehaviour为层 layerIndex 向 AnimatorState 添加 stateMachineBehaviourType 类型的状态机行为类。在处理同步层并且要在同步层添加状态机行为时应使用此函数。C# 用户可以使用通用版本。
AddLayerUtility 函数,用于向控制器添加一个层。
AddMotionUtility 函数,用其中的运动创建一个新状态。
AddParameterUtility 函数,用于向控制器添加一个参数。
CreateBlendTreeInController在新 AnimatorState 中创建一个 BlendTree。
GetBehaviours返回所有与类型 T 匹配或派生自 T 的 StateMachineBehaviour。
GetStateEffectiveBehaviours获取 AnimatorState 的有效状态机行为列表。行为或者存储在 AnimatorStateMachine 中,或者存储在 AnimatorLayer 的重载中。使用此函数可获取有效使用的 Behaviour 列表。
GetStateEffectiveMotion获取 AnimatorState 的有效 Motion。Motion 或者存储在 AnimatorStateMachine 中,或者存储在 AnimatorLayer 的重载中。使用此函数可获取有效使用的 Motion。
MakeUniqueLayerName为层创建唯一名称。
MakeUniqueParameterName为参数创建唯一名称。
RemoveLayerUtility 函数,用于从控制器删除一个层。
RemoveParameterUtility 函数,用于从控制器删除一个参数。
SetStateEffectiveBehaviours为 AnimatorState 设置有效的状态机 Behaviour 列表。Behaviour 列表或者存储在 AnimatorStateMachine 中,或者存储在 AnimatorLayer 的重载中。使用此函数可设置有效使用的 Behaviour 列表。
SetStateEffectiveMotion设置 AnimatorState 的有效 Motion。Motion 或者存储在 AnimatorStateMachine 中,或者存储在 AnimatorLayer 的重载中。使用此函数可设置有效使用的 Motion。

静态函数

CreateAnimatorControllerAtPath在给定路径处创建一个 AnimatorController。
CreateAnimatorControllerAtPathWithClip在给定路径处创建一个 AnimatorController,并自动创建一个带有 AnimatorStateMachine 的 AnimatorLayer,该状态机使用其中的 AnimationClip 添加一个 State。
CreateStateMachineBehaviour此函数将根据此脚本中的类定义创建一个 StateMachineBehaviour 实例。
FindStateMachineBehaviourContext使用此函数可检索行为的所有者。

继承的成员

变量

hideFlags该对象应该隐藏、随场景一起保存还是由用户修改?
name对象的名称。
animationClips检索控制器使用的所有 AnimationClip。

公共函数

GetInstanceID返回对象的实例 ID。
ToString返回 GameObject 的名称。

静态函数

Destroy删除 GameObject、组件或资源。
DestroyImmediate立即销毁对象 /obj/。强烈建议您改用 Destroy。
DontDestroyOnLoad在加载新的 Scene 时,请勿销毁 Object。
FindObjectOfType返回第一个类型为 type 的已加载的激活对象。
FindObjectsOfType返回所有类型为 type 的已加载的激活对象的列表。
Instantiate克隆 original 对象并返回克隆对象。

运算符

bool该对象是否存在?
operator !=比较两个对象是否引用不同的对象。
operator ==比较两个对象引用,判断它们是否引用同一个对象。