com.alicizax.unity.framework/Runtime/UI/Manager/IUIModule.cs

79 lines
3.0 KiB
C#
Raw Normal View History

2025-09-05 19:46:30 +08:00
using System;
using AlicizaX.Timer.Runtime;
using Cysharp.Threading.Tasks;
using UnityEngine;
namespace AlicizaX.UI.Runtime
{
2025-11-13 17:46:20 +08:00
/// <summary>
/// UI 模块接口:负责 UI 的创建、显示、关闭与查询。
/// 支持异步与同步(预加载)两种打开方式。
/// </summary>
2025-09-05 19:46:30 +08:00
public interface IUIModule : IModule, IModuleUpdate
{
2025-11-13 17:46:20 +08:00
/// <summary>
/// 初始化 UI 模块。
/// </summary>
/// <param name="root">UI 根节点(通常为 Canvas 根)</param>
/// <param name="isOrthographic">摄像机是否正交模式</param>
void Initialize(Transform root, bool isOrthographic);
/// <summary>
/// UI 摄像机
/// </summary>
2025-09-05 19:46:30 +08:00
Camera UICamera { get; set; }
2025-11-13 17:46:20 +08:00
/// <summary>
/// UI 根节点
/// </summary>
2025-09-05 19:46:30 +08:00
Transform UICanvasRoot { get; set; }
2025-11-13 17:46:20 +08:00
// ───────────────────────────────────────────────
// Show 系列:异步为主,同步为辅
// ───────────────────────────────────────────────
/// <summary>
/// 异步显示 UI推荐方式
/// </summary>
UniTask<T> ShowUI<T>(params object[] userDatas) where T : UIBase;
/// <summary>
/// 异步显示 UI使用字符串类型名
/// </summary>
2025-09-05 19:46:30 +08:00
UniTask<UIBase>? ShowUI(string type, params object[] userDatas);
2025-11-13 17:46:20 +08:00
/// <summary>
/// 同步显示 UI仅限资源已预加载时使用避免死锁
/// </summary>
T ShowUISync<T>(params object[] userDatas) where T : UIBase;
// ───────────────────────────────────────────────
// Close / Get 系列
// ───────────────────────────────────────────────
/// <summary>
/// 关闭指定类型 UI。
/// </summary>
2025-09-05 19:46:30 +08:00
void CloseUI<T>(bool force = false) where T : UIBase;
2025-11-13 17:46:20 +08:00
/// <summary>
/// 关闭指定类型 UI。
/// </summary>
2025-09-05 19:46:30 +08:00
void CloseUI(RuntimeTypeHandle handle, bool force = false);
2025-11-13 17:46:20 +08:00
/// <summary>
/// 获取当前已打开的指定类型 UI。
/// </summary>
T GetUI<T>() where T : UIBase;
// ───────────────────────────────────────────────
// 内部注入
// ───────────────────────────────────────────────
/// <summary>
/// 由框架内部注入计时模块。
/// </summary>
2025-09-05 19:46:30 +08:00
protected internal void SetTimerManager(ITimerModule timerModule);
}
}