using System.Collections.Generic; /// /// UI 窗口组 /// 封装一组窗口,提供批量操作 /// public class UIWindowGroup { /// /// 组内的窗口名称集合 /// private readonly HashSet _windowNames = new HashSet(); /// /// 构造函数 /// /// 窗口名称集合 public UIWindowGroup(IEnumerable windowNames) { if (windowNames != null) { foreach (var name in windowNames) { if (!string.IsNullOrEmpty(name)) { _windowNames.Add(name); } } } } /// /// 构造函数(可变参数) /// public UIWindowGroup(params string[] windowNames) : this((IEnumerable)windowNames) { } /// /// 批量隐藏组内所有窗口 /// public void Close(bool destroy) { var uiManager = UIManager.Instance; foreach (var windowName in _windowNames) { if (uiManager.IsWindowOpening(windowName)) { var window = uiManager.GetLoadedWindowByPath(windowName); if (window != null && window.gameObject.activeInHierarchy) { window.CloseWindow(destroy); } } } } /// /// 批量显示组内所有窗口 /// public void Show() { var uiManager = UIManager.Instance; foreach (var windowName in _windowNames) { var window = uiManager.GetLoadedWindowByPath(windowName); if (window != null && !window.gameObject.activeInHierarchy) { window.ShowWindow(); } } } }