主题
界面管理器(IRocUIManager)
- 接口:
RocPlay.Managers.UI.IRocUIManager - 默认实现:
RocUIManager,[RocImplementation(typeof(IRocUIManager), Priority = 0)] - 源码目录:
Assets/RocPlay/Managers/UI/
历史上 Docs/99-Archive/Managers/UI.md 有过更口语化的入门叙述;当前以本站 + Assets/RocPlay 源码为准(Task 异步、PanelAssetPrefix、RocPlay.RocUI 语法糖)。
先读 最小心智模型,再按需打开分册。
最小心智模型
- 谁在什么时候可用:
RocBootstrap对管理器做完Init/Start后,业务用RocCenter.Resolve<IRocUIManager>()或RocPlay.RocUI调 UI;不要在引导完成前Resolve。 - 面板名如何变成资源:
OpenPanelAsync("逻辑名", layer)中的"逻辑名"与RocUIConfig.PanelAssetPrefix拼成key;RocUIPanelFactory在TryGet<IRocResourceService>成功时LoadAssetAsync<GameObject>(key),否则Resources.Load(见 配置与加载)。 - 面板挂在哪:各
RocUILayer对应RocUICanvasBridge创建的Canvas;预制体实例化到该层RectTransform根下,嵌套 Canvas 的sortingOrder由层基础值 +RocUIPanel.SortOrder组成(见 API 与调用 与 面板)。 - 业务写在哪:脚本继承
RocUIPanel,重写OnShow/OnShow<T>/OnHide;Show/Show<T>由管理器驱动(见 面板)。 - 和全局事件的分工:面板之间少用硬引用;跨模块用
RocEventBus。RocUI与Resolve二选一为主风格(见 RocUI 静态门面)。
能力一览
- 分层 UI:
Fixed/Normal/Popup/Tip/Top各一层 Canvas;SortOrder(0~99)微调同层顺序。 - 异步打开/关闭:
OpenPanelAsync(泛型 / 带数据)、OpenModalPanelAsync、ClosePanel、CloseAllPanels、CloseLayer。 - 查询与预载:
GetPanel、IsPanelOpen、PreloadPanelAsync等。 - 缓存:工厂缓存预制体与已创建面板实例。
- 事件:
OnPanelOpened/OnPanelClosed(管理器级);面板另有OnPanelShow/OnPanelHide。
UI 层级(RocUILayer)
枚举值即该层 Canvas 基础 sortingOrder(RocUILayerConfig.GetSortOrder)。
| 层级 | 枚举数值 | 典型用途 |
|---|---|---|
| Fixed | 0 | 背景、常驻 HUD |
| Normal | 100 | 主界面、普通窗口 |
| Popup | 200 | 弹窗、对话框 |
| Tip | 300 | 飘字、Toast |
| Top | 400 | 全屏加载、顶层遮罩 |
每层 Canvas 名形如 NormalCanvas(RocUILayerConfig.GetCanvasName)。
文档分册
| 分册 | 内容 |
|---|---|
| 配置与加载 | RocUIConfig、PanelAssetPrefix、资源服务与 Resources 分支、注意事项 |
| API 与调用 | 典型异步调用、IRocUIManager 方法/事件表、已打开面板时的行为提示 |
| Components 组件库 | Assets/RocPlay/Managers/UI/Components 按组件拆分(每个组件独立页 + 最小示例代码) |
| RocUI 静态门面 | RocPlay.RocUI、ManagerInstance、静态成员映射与使用约定 |
| 示例 | 打开/关闭、带数据弹窗、模态框、预加载 |
| 面板与目录 | RocUIPanel 生命周期、预制体要求、源码目录、RocLog 最小示例 |
→ 管理器层总览
参考:Assets/RocPlay/Managers/UI/