AnimationMode digunakan oleh AnimasiWindow untuk menyimpan properti yang dimodifikasi oleh pemutaran AnimasiClip.
Ketika keluar AnimationMode semua properti dibalik ke keadaan default mereka. Sifat animasi juga disorot oleh inspektur. Gunakan StartAnimationMode untuk memasukkan mode Animasi. Dalam mode Animasi editor diwarnai untuk menunjukkan bahwa itu menarik. Properti dapat animasi melalui SampleAnimationClip.
Contoh skrip berikut menunjukkan bagaimana GameObject dapat animasi. AnimationMode memiliki fungsi yang mendukung ini. Demo dapat diluncurkan dari Contoh/AnimationMode
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(); } }
animasiPropertyColor | Warna yang digunakan untuk menunjukkan bahwa properti saat ini sedang animasi. |
calonPropertyColor | Warna yang digunakan untuk menunjukkan bahwa properti animasi telah dimodifikasi. |
recordedPropertyColor | Warna yang digunakan untuk menunjukkan bahwa properti animasi secara otomatis mencatat perubahan dalam klip animasi. |
AddEditorCurveBinding | Tandai properti yang didefinisikan oleh EditorCurveBinding saat ini sedang animasi. |
AddPropertyModification | Tandai properti saat ini sedang animasi. |
BeginSampling | Menginisialisasikan awal sampling klip animasi. |
EndSampling | Selesaikan pengambilan klip animasi. |
InAnimationMode | Periksa apakah Editor dalam mode Animasi. |
IsPropertyAnimated | Periksa apakah properti yang ditentukan dalam mode Animasi dan sedang animasi. |
SampleAnimationClip | Contoh AnimasiClip untuk GameObject dan juga mencatat sifat yang dimodifikasi ketika dalam mode Animasi. |
SamplePlayableGraph | Contoh indeks output yang ditentukan dari PlayableGraph dan juga mencatat sifat yang dimodifikasi ketika dalam mode Animasi. |
StartAnimationMode | Memulai mode Animasi. |
StopAnimationMode | Menghentikan mode Animasi dan mengalihkan sifat apa pun yang animasi sementara dalam mode Animasi. |