using UnityEngine; namespace BaseGames.UI { /// /// 面板栈管理接口。所有需要操作 UI 面板的组件应依赖此接口而非直接引用 /// ,从而保持可测试性和解耦合。 /// public interface IUIManager { /// 通过枚举 ID 打开已注册面板。 void OpenPanel(PanelId id); /// 打开指定 GameObject 面板并压栈;已在栈中则忽略(O(1) 判断)。 void OpenPanel(GameObject panel); /// 关闭栈顶面板并恢复上一层;上一层若实现 则自动恢复焦点。 void CloseTopPanel(); /// 运行时注册或覆盖面板绑定(如场景加载后动态添加的面板)。 void RegisterPanel(PanelId id, GameObject root); } }