Описание
Контроллер Animator управляет анимацией через слои с помощью конечных автоматов, управляемых параметрами.
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 | Добавляет класс поведения конечного автомата определенного типа в AnimatorState для слоя layerIndex. Этот метод следует использовать, когда вы имеете дело с синхронизированным слоем и хотите добавить поведение конечного автомата на синхронизированный слой. Обратите внимание, что нет соответствующего метода «Удалить». Чтобы удалить поведение конечного автомата, используйте Object.Destroy. |
AddLayer | Вспомогательная функция для добавления слоя в контроллер. |
AddMotion | Вспомогательная функция, которая создает новое состояние с движением в нем. |
AddParameter | Вспомогательная функция для добавления параметра в контроллер. |
CreateBlendTreeInController | Создает BlendTree в новом AnimatorState. |
GetBehaviours | Возвращает все StateMachineBehaviour, соответствующие типу T или производные от T. |
GetStateEffectiveBehaviours | Получает список эффективных действий конечного автомата для AnimatorState. Поведения хранятся либо в AnimatorStateMachine, либо в ovverrides AnimatorLayer. Используйте эту функцию, чтобы получить список поведения, который эффективно используется. |
GetStateEffectiveMotion | Получает эффективное движение для AnimatorState. Движение сохраняется либо в AnimatorStateMachine, либо в ovverrides AnimatorLayer. Используйте эту функцию, чтобы получить движение, которое эффективно используется. |
MakeUniqueLayerName | Создает уникальное имя для слоев. |
MakeUniqueParameterName | Создает уникальное имя для параметра. |
RemoveLayer | Вспомогательная функция для удаления слоя из контроллера. |
RemoveParameter | Вспомогательная функция для удаления параметра из контроллера. |
SetStateEffectiveBehaviours | Задает список эффективных действий конечного автомата для AnimatorState. Список Behavior хранится либо в AnimatorStateMachine, либо в ovverrides AnimatorLayer. Используйте эту функцию, чтобы установить список поведения, который будет эффективно использоваться. |
SetStateEffectiveMotion | Устанавливает эффективное движение для AnimatorState. Движение сохраняется либо в AnimatorStateMachine, либо в ovverrides AnimatorLayer. Используйте эту функцию, чтобы установить Движение, которое эффективно используется. |
Статические Методы
CreateAnimatorControllerAtPath | Создает AnimatorController по указанному пути. |
CreateAnimatorControllerAtPathWithClip | Создает AnimatorController по указанному пути и автоматически создает AnimatorLayer с AnimatorStateMachine, который добавит состояние с AnimationClip в нем. |
CreateStateMachineBehaviour | Эта функция создаст экземпляр StateMachineBehaviour на основе класса, определенного в этом скрипте. |
FindStateMachineBehaviourContext | Используйте эту функцию, чтобы получить владельца этого поведения. |
Унаследованные члены
Свойства
hideFlags | Должен ли объект быть скрыт, сохранен вместе со сценой или изменен пользователем? |
name | Имя объекта. |
animationClips | Извлекает все AnimationClip, используемые контроллером. |
Публичные Методы
GetInstanceID | Возвращает id экземпляра объекта. |
ToString | Возвращает имя объекта. |
Статические Методы
Destroy | Удаляет игровой объект, компонент или актив. |
DestroyImmediate | Уничтожает объект obj. Вместо этого рекомендуется использовать метод Destroy. |
DontDestroyOnLoad | Не уничтожает целевой объект при загрузке новой сцены. . |
FindObjectOfType | Возвращает первый активный загруженный объект. |
FindObjectsOfType | Получает список всех загруженных объектов. |
Instantiate | Клонирует исходный объект и возвращает клон. |
Операторы
bool | Объект существует? |
operator != | Сравнивает, ссылаются ли два объекта на другой объект. |
operator == | Сравнивает две ссылки на объекты, чтобы определить, ссылаются ли они на один и тот же объект. |