using TyphoonGUIStyle; using UnityEditor; using UnityEngine; namespace TyphoonUI { [CustomEditor(typeof(UIManagerMonitor))] internal class UIManagerEditor : Editor { private UIManagerMonitor Self => target as UIManagerMonitor; private bool _foldoutPackages = true; public override void OnInspectorGUI() { base.OnInspectorGUI(); #region 绘制package var packages = Self.UIPackages; if (packages != null) { GUILayout.Space(10); var titleRect = GUIDrawer.DrawTitleLabel("UIPackages", GUILayout.Height(24)); var btnFoldoutPackages = titleRect; btnFoldoutPackages.width = 60; btnFoldoutPackages.height -= 8; btnFoldoutPackages.center = titleRect.center; btnFoldoutPackages.x = titleRect.xMax - 4 - btnFoldoutPackages.width; if (GUI.Button(btnFoldoutPackages, _foldoutPackages ? "收起" : "展开")) { _foldoutPackages = !_foldoutPackages; } if (_foldoutPackages) { foreach (var kv in packages) { var value = kv.Value; EditorGUILayout.ObjectField(value, typeof(Object), false); } } } #endregion #region 绘制面板 { GUILayout.Space(10); GUIDrawer.DrawTitleLabel("UIPanels", GUILayout.Height(24)); var panels = Self.Panels; var layers = Self.LayerPanels; foreach (var kv in layers) { var key = kv.Key; var value = kv.Value; GUILayout.Space(5); GUILayout.Label(key.ToString(), Styles.BoldLabel); GUILayout.BeginHorizontal(); GUILayout.Space(22); foreach (var element in value) { if (panels.TryGetValue(element, out var match)) { EditorGUILayout.ObjectField(match, typeof(Object), false); } else { EditorGUILayout.ObjectField(null, typeof(Object), false); } } GUILayout.EndHorizontal(); } } #endregion Repaint(); } } }