using System.IO; using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine; namespace ActionTool { public class ActionEditor : EditorWindow { [MenuItem("Custom/ActionTool/Open")] static void OpenTools() { ActionManager.AnimationWindow = GetWindow(); } private string m_SearchText; public void OnEnable() { } public void OnDisable() { } public void OnGUI() { GUILayout.Space(5); GUI_SelectUnit(); GUILayout.Space(5); GUI_AnimationList(); GUILayout.Space(5); } private void GUI_SelectUnit() { if(ActionManager.CurrentUnit == null) { EditorGUILayout.HelpBox("选择角色prefab", MessageType.Warning); } GUILayout.BeginHorizontal(); GameObject selectObj = EditorGUILayout.ObjectField(ActionManager.CurrentUnit, typeof(GameObject), false, GUILayout.Width(position.width - 160)) as GameObject; if(selectObj != ActionManager.CurrentUnit) { ActionManager.OnSelectObj(selectObj); } if (GUILayout.Button("Select", GUILayout.Width(70))) { } if (GUILayout.Button("Reimport", GUILayout.Width(70))) { } GUILayout.EndHorizontal(); } private Vector2 m_AnimtionListScroll; private void GUI_AnimationList() { if (!ActionManager.HasSelectObj()) return; string unitName = ActionManager.GetUnitName(); EditorGUILayout.LabelField("Animation List"); m_SearchText = GUILayout.TextField(m_SearchText, "SearchTextField", GUILayout.Width(position.width - 20)).ToLower(); string animFolder = ActionManager.s_AnimFolder + unitName + "/"; string[] animfiles = Directory.GetFiles(animFolder); if (animfiles != null && animfiles.Length > 0) { GUIStyle style = GUI.skin.GetStyle("Button"); TextAnchor prevAnchor = style.alignment; TextClipping prevClipping = style.clipping; bool prevRichText = style.richText; style.alignment = TextAnchor.MiddleCenter; style.clipping = TextClipping.Overflow; style.richText = true; m_AnimtionListScroll = EditorGUILayout.BeginScrollView(m_AnimtionListScroll); for (int i = 0; i < animfiles.Length; ++i) { string file = animfiles[i]; if (file.Contains(".meta")) continue; string animName = Path.GetFileNameWithoutExtension(file); bool show = m_SearchText == string.Empty || m_SearchText == "" || animName.ToLower().Contains(m_SearchText); if (!show) continue; bool bChecked = ActionManager.CurrentAnimationName == animName; bool check = GUILayout.Toggle(bChecked, animName, style, GUILayout.Height(15)); if (check && ActionManager.CurrentAnimationName != animName) ActionManager.OnSelectAnimation(animName); } EditorGUILayout.EndScrollView(); style.alignment = prevAnchor; style.clipping = prevClipping; style.richText = prevRichText; } } } }