AnimationMode
класс в UnityEditor
Описание
AnimationMode используется AnimationWindow для хранения свойств, измененных при воспроизведении AnimationClip.
При выходе AnimationMode все свойства возвращаются к значениям по умолчанию. Анимируемые свойства при этом подсвечиваются инспектором. Использование StartAnimationMode чтобы войти Animation режим. В Animation в режиме анимации редактор затеняется, чтобы показать, что он анимирует. Свойства могут быть анимированы с помощью SampleAnimationClip.
Следующий пример скрипта показывает, как GameObject может быть анимирован. AnimationMode Демонстрацию можно запустить из раздела "Примеры/AnimationMode demo" меню. После запуска этого демо требуется GameObject которые будут отобраны в ходе Scene (Этот пример требует, чтобы игра не была запущена в окне Game (После GameObject Выберите созданный анимационный клип для выбранного клипа и нажмите кнопку "Выбрать". GameObject. После того, как анимационный клип был загружен, анимация может быть применена к GameObject. Нажатие кнопки Анимация добавляет в окно ползунок. Использование ползунок будет применять анимацию к выбранному GameObject. Кнопка Блокировка предотвращает применение анимации к другому объекту. GameObject.
using UnityEngine; using UnityEditor;
public class ExampleClass : EditorWindow { protected GameObject go; protected AnimationClip animationClip; protected float time = 0.0f; protected bool lockSelection = false; protected bool animationMode = false;
[MenuItem("Examples/AnimationMode demo", false, 2000)] public static void DoWindow() { var window = GetWindowWithRect<ExampleClass>(new Rect(0, 0, 300, 80)); window.Show(); }
// Has a GameObject been selection? public void OnSelectionChange() { if (!lockSelection) { go = Selection.activeGameObject; Repaint(); } }
// Main editor window public void OnGUI() { // Wait for user to select a GameObject if (go == null) { EditorGUILayout.HelpBox("Please select a GameObject", MessageType.Info); return; }
// Animate and Lock buttons. Check if Animate has changed GUILayout.BeginHorizontal(); EditorGUI.BeginChangeCheck(); GUILayout.Toggle(AnimationMode.InAnimationMode(), "Animate"); if (EditorGUI.EndChangeCheck()) ToggleAnimationMode();
GUILayout.FlexibleSpace(); lockSelection = GUILayout.Toggle(lockSelection, "Lock"); GUILayout.EndHorizontal();
// Slider to use when Animate has been ticked EditorGUILayout.BeginVertical(); animationClip = EditorGUILayout.ObjectField(animationClip, typeof(AnimationClip), false) as AnimationClip; if (animationClip != null) { float startTime = 0.0f; float stopTime = animationClip.length; time = EditorGUILayout.Slider(time, startTime, stopTime); } else if (AnimationMode.InAnimationMode()) AnimationMode.StopAnimationMode(); EditorGUILayout.EndVertical(); }
void Update() { if (go == null) return;
if (animationClip == null) return;
// Animate the GameObject if (!EditorApplication.isPlaying && AnimationMode.InAnimationMode()) { AnimationMode.BeginSampling(); AnimationMode.SampleAnimationClip(go, animationClip, time); AnimationMode.EndSampling();
SceneView.RepaintAll(); } }
void ToggleAnimationMode() { if (AnimationMode.InAnimationMode()) AnimationMode.StopAnimationMode(); else AnimationMode.StartAnimationMode(); } }
Статические свойства
| Свойство | Описание |
|---|---|
| animatedPropertyColor | Цвет, используемый для указания на то, что свойство в настоящее время анимировано. |
| candidatePropertyColor | Цвет, используемый для указания того, что анимированное свойство было изменено. |
| recordedPropertyColor | Цвет, используемый для указания того, что анимированное свойство автоматически записывает изменения в клипе анимации. |
Статические методы
| Метод | Описание |
|---|---|
| AddEditorCurveBinding | Помечает свойство, определенное EditorCurveBinding, как в настоящее время анимированное. |
| AddPropertyModification | Помечает свойство как находящееся в процессе анимации. |
| BeginSampling | Инициализация начала семплирования клипа анимации. |
| EndSampling | Завершите семплирование клипа анимации. |
| InAnimationMode | Проверяет, находится ли Редактор в режиме Animation. |
| IsPropertyAnimated | Проверяет, находится ли указанное свойство в режиме Animation и анимировано ли оно. |
| SampleAnimationClip | Выбирает AnimationClip для GameObject и также записывает измененные свойства в режиме Animation. |
| SamplePlayableGraph | Пробирует указанный индекс выхода PlayableGraph и также записывает измененные свойства в режиме Animation. |
| StartAnimationMode | Запускает режим Animation. |
| StopAnimationMode | Остановка режима Animation и возврат всех свойств, которые были анимированы в режиме Animation. |