Описание
AnimationMode используется AnimationWindow для хранения свойств, измененных AnimationClip воспроизведение.
При выходе из AnimationMode все свойства возвращаются к состоянию по умолчанию. Анимированные свойства также выделяются инспектором. Используйте StartAnimationMode, чтобы войти в режим анимации. В режиме анимации редактор окрашен, чтобы показать, что он анимируется. Свойства можно анимировать с помощью SampleAnimationClip.
В следующем примере скрипта показано, как можно анимировать GameObject. AnimationMode имеет функции, поддерживающие это. Демонстрацию можно запустить из меню «Примеры/AnimationMode demo». После запуска этой демонстрации требуется выбрать GameObject в окне Scene. (Для этого примера требуется, чтобы игра не была запущена в представлении Game.) После выбора 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(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 | Проверяет, находится ли редактор в режиме анимации. |
IsPropertyAnimated | Проверяет, находится ли указанное свойство в режиме анимации и анимируется ли оно. |
SampleAnimationClip | Сэмплирует AnimationClip для GameObject, а также записывает измененные свойства в режиме анимации. |
SamplePlayableGraph | Сэмплирует указанный выходной индекс PlayableGraph, а также записывает измененные свойства в режиме анимации. |
StartAnimationMode | Запускает режим анимации. |
StopAnimationMode | Остановка режима анимации и восстановление всех свойств, которые были анимированы в режиме анимации. |