using UnityEngine; #if UNITY_EDITOR using UnityEditor; using UnityEditor.Animations; using System.Linq; #endif [RequireComponent(typeof(Animator))] public class Script_11 : MonoBehaviour { } #if UNITY_EDITOR [CustomEditor(typeof(Script_11))] public class ScriptEditor_11 : Editor { private AnimationClip[] m_Clips = null; private Script_11 m_Script = null; private void OnEnable() { m_Script = (target as Script_11); Animator animator = m_Script.gameObject.GetComponent<Animator>(); AnimatorController controller = (AnimatorController)animator.runtimeAnimatorController; m_Clips = controller.animationClips; } private int m_SelectIndex = 0; private float m_SliderValue = 0; public override void OnInspectorGUI() { base.OnInspectorGUI(); EditorGUI.BeginChangeCheck(); m_SelectIndex = EditorGUILayout.Popup("动画", m_SelectIndex, m_Clips.Select(pkg => pkg.name).ToArray()); m_SliderValue = EditorGUILayout.Slider("进度", m_SliderValue, 0f, 1f); if (EditorGUI.EndChangeCheck()) { AnimationClip clip = m_Clips[m_SelectIndex]; float time = clip.length * m_SliderValue; clip.SampleAnimation(m_Script.gameObject, time); } } } #endif