83 lines
2.8 KiB
C#
83 lines
2.8 KiB
C#
using System.Collections.Generic;
|
||
using TMPro;
|
||
|
||
public partial class UIManagerBase
|
||
{
|
||
public struct WindowInfo
|
||
{
|
||
public UICanvasLayer windowLayer; // UI的显示层级
|
||
public UIVisibilityStrategy VisibilityStrategy; // 可见性策略(纯性能,不影响UI生命周期)
|
||
public CameraMode CameraMode; // 相机模式 ,纯性能
|
||
public bool IsAutoAnim;
|
||
public bool NeedScreenshot; // 是否需要截图(用于模糊背景)
|
||
public UIBackStrategyType BackStrategyType; // 返回键策略类型
|
||
}
|
||
|
||
public enum EShowAnimMode
|
||
{
|
||
Default,
|
||
MustShow, //强制显示
|
||
NotShow, //强制不显示
|
||
}
|
||
|
||
public enum CameraMode
|
||
{
|
||
None, // 不管相机
|
||
Shut, // 关闭相机
|
||
Show, // 显示相机
|
||
}
|
||
|
||
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="cameraMode"></param> 界面管理相机模式
|
||
/// <param name="isAutoAnim"></param> 是否自动播放开关界面渐变动画
|
||
/// <param name="needScreenshot"></param> 是否需要截图(用于模糊背景)
|
||
/// <param name="backStrategy"></param> 返回键策略(可选,默认CloseSelf)
|
||
protected void _WindowMeta(string name, UICanvasLayer windowLayer, UIVisibilityStrategy visibilityStrategy, CameraMode cameraMode,
|
||
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,
|
||
CameraMode = cameraMode,
|
||
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;
|
||
}
|
||
} |