版本: Unity 6 (6000.0)
语言英语
  • C#

AnimatorController

UnityEditor.Animations 中的类

/

继承自:RuntimeAnimatorController

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每个建议更改,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

描述

动画控制器通过具有状态机的层控制动画,由参数控制。

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将特定类型的状态机行为类添加到 layer layerIndex 的 AnimatorState。当您处理同步层并希望在同步层上添加状态机行为时,应使用此方法。请注意,没有相应的“删除”方法。要删除状态机行为,请使用 Object.Destroy。
AddLayer用于向控制器添加层的实用程序函数。
AddMotion创建包含运动的新状态的实用程序函数。
AddParameter用于向控制器添加参数的实用程序函数。
CreateBlendTreeInController在新的 AnimatorState 中创建混合树。
GetBehaviours返回与类型 T 匹配或派生自 T 的所有 StateMachineBehaviour。
GetStateEffectiveBehaviours获取 AnimatorState 的有效状态机行为列表。行为存储在 AnimatorStateMachine 或 AnimatorLayer 的覆盖中。使用此函数获取实际使用的行为列表。
GetStateEffectiveMotion获取 AnimatorState 的有效运动。运动存储在 AnimatorStateMachine 或 AnimatorLayer 的覆盖中。使用此函数获取实际使用的运动。
MakeUniqueLayerName为层创建唯一名称。
MakeUniqueParameterName为参数创建唯一名称。
RemoveLayer用于从控制器中删除层的实用程序函数。
RemoveParameter用于从控制器中删除参数的实用程序函数。
SetStateEffectiveBehaviours设置 AnimatorState 的有效状态机行为列表。行为列表存储在 AnimatorStateMachine 或 AnimatorLayer 的覆盖中。使用此函数设置实际使用的行为列表。
SetStateEffectiveMotion设置 AnimatorState 的有效运动。运动存储在 AnimatorStateMachine 或 AnimatorLayer 的覆盖中。使用此函数设置实际使用的运动。

静态方法

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

继承的成员

属性

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

公共方法

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

静态方法

Destroy删除 GameObject、组件或资产。
DestroyImmediate立即销毁对象 obj。强烈建议您改用 Destroy。
DontDestroyOnLoad加载新场景时不要销毁目标对象。
FindAnyObjectByType检索类型 type 的任何已加载活动对象。
FindFirstObjectByType检索类型 type 的第一个已加载活动对象。
FindObjectsByType检索类型 type 的所有已加载对象的列表。
Instantiate克隆对象 original 并返回克隆。
InstantiateAsync捕获原始对象(必须与某些 GameObject 相关)的快照并返回 AsyncInstantiateOperation。

运算符

bool对象是否存在?
operator !=比较两个对象是否引用不同的对象。
operator ==比较两个对象引用以查看它们是否引用同一个对象。