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 _windowsInfo = new Dictionary(64); public Dictionary WindowInfos => _windowsInfo; /// /// 注册所有窗口元数据(子类可重写以提供项目特定的窗口配置) /// protected virtual void _AllWindowMeta() { } /// /// 注册UI窗口 /// /// /// 层级 /// 可见性策略 /// 界面管理相机模式 /// 是否自动播放开关界面渐变动画 /// 是否需要截图(用于模糊背景) /// 返回键策略(可选,默认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 }); } /// /// 获取窗口配置信息 /// public WindowInfo GetWindowInfo(string windowName) { if (_windowsInfo.TryGetValue(windowName, out var info)) { return info; } DebugUtil.LogError($"Cannot find window config: {windowName}"); return default; } }