AnimatorController
класс в 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 | Добавляет класс поведения машины состояний указанного типа к AnimatorState для слоя layerIndex. Этот метод следует применять, когда вы работаете с синхронизированным слоем и хотите добавить поведение машины состояний на него. Учтите, что парного метода Remove нет. Чтобы удалить поведение машины состояний, используйте Object.Destroy. |
| AddLayer | Утилита для добавления слоя к контроллеру. |
| AddMotion | Вспомогательная функция, создающая новое состояние с движением внутри. |
| AddParameter | Утилитная функция для добавления параметра к контроллеру. |
| CreateBlendTreeInController | Создает BlendTree в новом AnimatorState. |
| GetBehaviours | Возвращает все StateMachineBehaviour, соответствующие типу T или полученные из T. |
| GetStateEffectiveBehaviours | Возвращает действующий список поведений машины состояний для AnimatorState. Поведения хранятся либо в AnimatorStateMachine, либо в переопределениях AnimatorLayer. Эта функция возвращает список поведений, которые действительно применяются. |
| GetStateEffectiveMotion | Получает эффективное Движение для AnimatorState. Движение хранится либо в AnimatorStateMachine, либо в ovverrides AnimatorLayer. Используйте эту функцию, чтобы получить Движение, которое эффективно используется. |
| MakeUniqueLayerName | Создает уникальное имя для слоев. |
| MakeUniqueParameterName | Создает уникальное имя для параметра. |
| RemoveLayer | Утилитная функция для удаления слоя из контроллера. |
| RemoveParameter | Утилита для удаления параметра из контроллера. |
| SetStateEffectiveBehaviours | Задаёт действующий список поведений машины состояний для AnimatorState. Список хранится либо в AnimatorStateMachine, либо в переопределениях AnimatorLayer. С помощью этой функции задаётся список поведений, которые действительно применяются. |
| SetStateEffectiveMotion | Задает эффективное Движение для AnimatorState. Движение сохраняется либо в AnimatorStateMachine, либо в ovverrides AnimatorLayer. Используйте эту функцию, чтобы установить Движение, которое эффективно используется. |
Статические методы
| Метод | Описание |
|---|---|
| CreateAnimatorControllerAtPath | Создает AnimatorController в указанном пути. |
| CreateAnimatorControllerAtPathWithClip | Создает AnimatorController на указанном пути и автоматически создает AnimatorLayer с AnimatorStateMachine, который добавит Состояние с AnimationClip в нем. |
| CreateNewStateMachineBehaviour | Эта функция создаёт экземпляр StateMachineBehaviour на основе класса, объявленного в этом скрипте. |
| FindStateMachineBehaviourContext | Используйте эту функцию для получения владельца этого поведения. |
Унаследованные члены 4
Свойства
| Свойство | Описание |
|---|---|
| hideFlags | Должен ли объект быть скрытым, сохраняться с Scene или изменяться пользователем? |
| name | Имя объекта. |
| animationClips | Получает все AnimationClip, используемые контроллером. |
Открытые методы
| Метод | Описание |
|---|---|
| GetInstanceID | Получает экземпляр ID объекта. |
| ToString | Возвращает имя объекта. |
Статические методы
| Метод | Описание |
|---|---|
| Destroy | Удаляет GameObject, компонент или ресурс. |
| DestroyImmediate | Немедленно уничтожает указанный объект. Используйте с осторожностью и только в режиме редактирования. |
| DontDestroyOnLoad | Не уничтожать целевой Объект при загрузке нового Scene. |
| FindAnyObjectByType | Получает любой активный загруженный объект типа Type. |
| FindFirstObjectByType | Получает первый активный загруженный объект типа Type. |
| FindObjectsByType | Получает список всех загруженных объектов типа Type. |
| Instantiate | Клонирует исходный объект и возвращает клон. |
| InstantiateAsync | Захватывает моментальный снимок первоначального объекта (который должен быть связан с каким-либо GameObject) и возвращает AsyncInstantiateOperation. |
Операторы
| Оператор | Описание |
|---|---|
| bool | Существует ли объект? |
| оператор!= | Сравнивает, если два объекта ссылаются на разные объекты. |
| оператор == | Сравнение двух ссылок на объекты для определения того, относятся ли они к одному и тому же объекту. |