using System.Collections.Generic; using UnityEditor; using UnityEngine; using UnityEngine.UIElements; using MuHua; namespace MuHuaEditor { /// /// 编辑器窗口 /// public abstract class ModuleUIEditorWindow : EditorWindow { /// UXML 资源 public VisualTreeAsset VisualTreeAsset = default; /// 绑定文档 public VisualElement Element; /// 控件列表 public List controls = new List(); public virtual void CreateGUI() { // Instantiate UXML Element = VisualTreeAsset.Instantiate(); Element.style.flexGrow = 1; rootVisualElement.Add(Element); Initial(); } public virtual void Update() => controls.ForEach(control => control.Update()); public virtual void OnDestroy() => controls.ForEach(control => control.Dispose()); /// 初始化 public abstract void Initial(); /// 添加控件 public void AddControl(UIControl control) => controls.Add(control); /// 移除控件 public void RemoveControl(UIControl control) => controls.Remove(control); /// 查询UI元素 public T Q(string name = null, string className = null) where T : VisualElement => Element.Q(name, className); } }