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