76 lines
2.7 KiB
C#
76 lines
2.7 KiB
C#
|
|
using System.Collections.Generic;
|
|||
|
|
using TMPro;
|
|||
|
|
|
|||
|
|
public partial class UIManagerBase
|
|||
|
|
{
|
|||
|
|
public struct WindowInfo
|
|||
|
|
{
|
|||
|
|
public UICanvasLayer windowLayer; // UI的显示层级
|
|||
|
|
public UIVisibilityStrategy VisibilityStrategy; // 可见性策略(纯性能,不影响UI生命周期)
|
|||
|
|
public bool ShutMainCamera; // 是否关闭驻主相机,纯性能
|
|||
|
|
public bool IsAutoAnim;
|
|||
|
|
public bool NeedScreenshot; // 是否需要截图(用于模糊背景)
|
|||
|
|
public UIBackStrategyType BackStrategyType; // 返回键策略类型
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public enum EShowAnimMode
|
|||
|
|
{
|
|||
|
|
Default,
|
|||
|
|
MustShow, //强制显示
|
|||
|
|
NotShow, //强制不显示
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected Dictionary<string, WindowInfo> _windowsInfo = new Dictionary<string, WindowInfo>(64);
|
|||
|
|
public Dictionary<string, WindowInfo> WindowInfos => _windowsInfo;
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 注册所有窗口元数据(子类可重写以提供项目特定的窗口配置)
|
|||
|
|
/// </summary>
|
|||
|
|
protected virtual void _AllWindowMeta()
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 注册UI窗口
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="name"></param>
|
|||
|
|
/// <param name="windowLayer"></param> 层级
|
|||
|
|
/// <param name="visibilityStrategy"></param> 可见性策略
|
|||
|
|
/// <param name="shutMainCamera"></param> 是否关闭主相机
|
|||
|
|
/// <param name="isAutoAnim"></param> 是否自动播放开关界面渐变动画
|
|||
|
|
/// <param name="needScreenshot"></param> 是否需要截图(用于模糊背景)
|
|||
|
|
/// <param name="backStrategy"></param> 返回键策略(可选,默认CloseSelf)
|
|||
|
|
protected void _WindowMeta(string name, UICanvasLayer windowLayer, UIVisibilityStrategy visibilityStrategy,
|
|||
|
|
bool shutMainCamera, bool isAutoAnim, bool needScreenshot, UIBackStrategyType backStrategy = UIBackStrategyType.CloseSelf)
|
|||
|
|
{
|
|||
|
|
if (_windowsInfo.ContainsKey(name))
|
|||
|
|
{
|
|||
|
|
DebugUtil.LogError($"重复注册UI窗口{name},请检查!");
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
_windowsInfo.Add(name, new WindowInfo
|
|||
|
|
{
|
|||
|
|
windowLayer = windowLayer,
|
|||
|
|
VisibilityStrategy = visibilityStrategy,
|
|||
|
|
ShutMainCamera = shutMainCamera,
|
|||
|
|
IsAutoAnim = isAutoAnim,
|
|||
|
|
NeedScreenshot = needScreenshot,
|
|||
|
|
BackStrategyType = backStrategy
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取窗口配置信息
|
|||
|
|
/// </summary>
|
|||
|
|
public WindowInfo GetWindowInfo(string windowName)
|
|||
|
|
{
|
|||
|
|
if (_windowsInfo.TryGetValue(windowName, out var info))
|
|||
|
|
{
|
|||
|
|
return info;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
DebugUtil.LogError($"Cannot find window config: {windowName}");
|
|||
|
|
return default;
|
|||
|
|
}
|
|||
|
|
}
|