2025-12-19 14:44:14 +08:00
|
|
|
|
using System.Collections.Generic;
|
2025-10-13 13:07:07 +08:00
|
|
|
|
using TMPro;
|
2023-08-22 19:08:45 +08:00
|
|
|
|
|
2026-01-09 17:09:20 +08:00
|
|
|
|
public partial class UIManagerBase
|
2023-08-22 19:08:45 +08:00
|
|
|
|
{
|
2024-01-24 15:42:01 +08:00
|
|
|
|
public struct WindowInfo
|
2023-08-22 19:08:45 +08:00
|
|
|
|
{
|
2025-12-30 14:36:01 +08:00
|
|
|
|
public UICanvasLayer windowLayer; // UI的显示层级
|
|
|
|
|
|
public UIVisibilityStrategy VisibilityStrategy; // 可见性策略(纯性能,不影响UI生命周期)
|
2026-01-12 11:42:50 +08:00
|
|
|
|
public CameraMode CameraMode; // 相机模式 ,纯性能
|
2024-08-12 14:01:56 +08:00
|
|
|
|
public bool IsAutoAnim;
|
2025-12-25 15:01:35 +08:00
|
|
|
|
public bool NeedScreenshot; // 是否需要截图(用于模糊背景)
|
2025-12-25 20:26:05 +08:00
|
|
|
|
public UIBackStrategyType BackStrategyType; // 返回键策略类型
|
2023-08-22 19:08:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-05-29 18:05:35 +08:00
|
|
|
|
public enum EShowAnimMode
|
|
|
|
|
|
{
|
|
|
|
|
|
Default,
|
|
|
|
|
|
MustShow, //强制显示
|
|
|
|
|
|
NotShow, //强制不显示
|
|
|
|
|
|
}
|
2026-01-12 11:42:50 +08:00
|
|
|
|
|
|
|
|
|
|
public enum CameraMode
|
|
|
|
|
|
{
|
|
|
|
|
|
None, // 不管相机
|
|
|
|
|
|
Shut, // 关闭相机
|
|
|
|
|
|
Show, // 显示相机
|
|
|
|
|
|
}
|
2025-05-29 18:05:35 +08:00
|
|
|
|
|
2026-01-09 17:09:20 +08:00
|
|
|
|
protected Dictionary<string, WindowInfo> _windowsInfo = new Dictionary<string, WindowInfo>(64);
|
2024-01-24 15:42:01 +08:00
|
|
|
|
public Dictionary<string, WindowInfo> WindowInfos => _windowsInfo;
|
2023-08-22 19:08:45 +08:00
|
|
|
|
|
2026-01-09 17:09:20 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 注册所有窗口元数据(子类可重写以提供项目特定的窗口配置)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
protected virtual void _AllWindowMeta()
|
2023-08-22 19:08:45 +08:00
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-08-13 14:40:15 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 注册UI窗口
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="name"></param>
|
|
|
|
|
|
/// <param name="windowLayer"></param> 层级
|
2025-12-23 13:05:47 +08:00
|
|
|
|
/// <param name="visibilityStrategy"></param> 可见性策略
|
2026-01-12 11:42:50 +08:00
|
|
|
|
/// <param name="cameraMode"></param> 界面管理相机模式
|
2024-08-13 14:40:15 +08:00
|
|
|
|
/// <param name="isAutoAnim"></param> 是否自动播放开关界面渐变动画
|
2025-12-25 15:01:35 +08:00
|
|
|
|
/// <param name="needScreenshot"></param> 是否需要截图(用于模糊背景)
|
2025-12-25 20:26:05 +08:00
|
|
|
|
/// <param name="backStrategy"></param> 返回键策略(可选,默认CloseSelf)
|
2026-01-12 11:42:50 +08:00
|
|
|
|
protected void _WindowMeta(string name, UICanvasLayer windowLayer, UIVisibilityStrategy visibilityStrategy, CameraMode cameraMode,
|
|
|
|
|
|
bool isAutoAnim, bool needScreenshot, UIBackStrategyType backStrategy = UIBackStrategyType.CloseSelf)
|
2023-08-22 19:08:45 +08:00
|
|
|
|
{
|
2025-12-05 12:20:34 +08:00
|
|
|
|
if (_windowsInfo.ContainsKey(name))
|
|
|
|
|
|
{
|
|
|
|
|
|
DebugUtil.LogError($"重复注册UI窗口{name},请检查!");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
2025-12-25 20:26:05 +08:00
|
|
|
|
_windowsInfo.Add(name, new WindowInfo
|
|
|
|
|
|
{
|
|
|
|
|
|
windowLayer = windowLayer,
|
|
|
|
|
|
VisibilityStrategy = visibilityStrategy,
|
2026-01-12 11:42:50 +08:00
|
|
|
|
CameraMode = cameraMode,
|
2025-12-25 20:26:05 +08:00
|
|
|
|
IsAutoAnim = isAutoAnim,
|
|
|
|
|
|
NeedScreenshot = needScreenshot,
|
|
|
|
|
|
BackStrategyType = backStrategy
|
|
|
|
|
|
});
|
2025-12-22 16:55:56 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <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;
|
2024-08-08 12:19:32 +08:00
|
|
|
|
}
|
2023-08-22 19:08:45 +08:00
|
|
|
|
}
|