using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; using UnityEditor.UIElements; using UnityEngine.UIElements; public class TransitionEditorWindow : EditorWindow { Transition[] transitions; Dictionary<Transition,string> transitionFileNames = new Dictionary<Transition,string>(); // Start is called before the first frame update void OnGUI() { if (transitions != null) { if (transitions.Length > 0) { for (int i = 0; i < transitions.Length; i++) { if (transitionFileNames.ContainsKey(transitions[i])) { GUILayout.Label("Transition - " + i); transitionFileNames[transitions[i]] = EditorGUILayout.TextField(new GUIContent("Transition Name"), transitionFileNames[transitions[i]]); if (GUILayout.Button("Rename")) { Rename(AssetDatabase.GetAssetPath(transitions[i]), transitionFileNames[transitions[i]]); } transitions[i].weight = EditorGUILayout.IntField(new GUIContent("Weight"), transitions[i].weight); transitions[i].action = (Action)EditorGUILayout.ObjectField("Action", transitions[i].action, typeof(Action), false); transitions[i].condition = (Condition)EditorGUILayout.ObjectField("Condition", transitions[i].condition, typeof(Condition), false); } } } else { EditorGUILayout.HelpBox(new GUIContent("No Transition added")); } } else { EditorGUILayout.HelpBox(new GUIContent("No Transition added")); } } public void Rename(string path,string title) { AssetDatabase.RenameAsset(path, title); AssetDatabase.Refresh(); } public static void Init(Transition[] transition) { TransitionEditorWindow window = (TransitionEditorWindow)GetWindow<TransitionEditorWindow>("Transition Editor"); window.transitions = transition; foreach (Transition tr in transition) { if (!window.transitionFileNames.ContainsKey(tr)) { window.transitionFileNames.Add(tr, tr.name); } else { window.transitionFileNames[tr] = tr.name; } } window.Show(); } private void Awake() { transitionFileNames.Clear(); transitions = null; } }