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();
}
}
}
}