NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Framework/UI/UIManagerBase.Window.cs

83 lines
2.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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;
}
}