using UnityEngine; using UnityEditor; using System.Collections.Generic; public class WindowTool : EditorWindow { private string windowName = ""; private int selectedUIIndex = -1; private List uiNameList = new List(); [MenuItem("Tools/WindowTool")] public static void ShowWindow() { GetWindow("WindowTool"); } private void OnGUI() { EditorGUILayout.LabelField("窗口名称", EditorStyles.boldLabel); // 监听TextField变化 string newWindowName = EditorGUILayout.TextField("windowName", windowName); if (newWindowName != windowName) { windowName = newWindowName; selectedUIIndex = -1; // 手动输入时取消选中 } // 获取UIManager中的界面列表 if (UIManager.Instance != null && UIManager.Instance.uiDict != null) { uiNameList.Clear(); foreach (var kv in UIManager.Instance.uiDict) { uiNameList.Add(kv.Key); } EditorGUILayout.Space(); EditorGUILayout.LabelField("UI界面列表", EditorStyles.boldLabel); int clickedIndex = GUILayout.SelectionGrid(selectedUIIndex, uiNameList.ToArray(), 1); // 只要点击就覆盖windowName if (clickedIndex >= 0 && clickedIndex < uiNameList.Count) { selectedUIIndex = clickedIndex; windowName = uiNameList[selectedUIIndex]; } } else { EditorGUILayout.HelpBox("UIManager.Instance 或 uiDict 未初始化", MessageType.Warning); } EditorGUILayout.Space(); // 保留原有的打开和关闭按钮 EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("打开")) { // 打开窗口逻辑 UIManager.Instance.OpenWindow(windowName); } if (GUILayout.Button("关闭")) { // 关闭窗口逻辑 UIManager.Instance.CloseWindow(windowName); } if (GUILayout.Button("关闭所有窗口再打开BattleWin")) { foreach (var win in uiNameList) { UIManager.Instance.CloseWindow(win); } UIManager.Instance.OpenWindow("BattleWin"); } EditorGUILayout.EndHorizontal(); } }