77 lines
1.9 KiB
C#
77 lines
1.9 KiB
C#
using System.Collections.Generic;
|
|
|
|
/// <summary>
|
|
/// UI 窗口组
|
|
/// 封装一组窗口,提供批量操作
|
|
/// </summary>
|
|
public class UIWindowGroup
|
|
{
|
|
/// <summary>
|
|
/// 组内的窗口名称集合
|
|
/// </summary>
|
|
private readonly HashSet<string> _windowNames = new HashSet<string>();
|
|
|
|
/// <summary>
|
|
/// 构造函数
|
|
/// </summary>
|
|
/// <param name="windowNames">窗口名称集合</param>
|
|
public UIWindowGroup(IEnumerable<string> windowNames)
|
|
{
|
|
if (windowNames != null)
|
|
{
|
|
foreach (var name in windowNames)
|
|
{
|
|
if (!string.IsNullOrEmpty(name))
|
|
{
|
|
_windowNames.Add(name);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 构造函数(可变参数)
|
|
/// </summary>
|
|
public UIWindowGroup(params string[] windowNames)
|
|
: this((IEnumerable<string>)windowNames)
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// 批量隐藏组内所有窗口
|
|
/// </summary>
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 批量显示组内所有窗口
|
|
/// </summary>
|
|
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();
|
|
}
|
|
}
|
|
}
|
|
}
|