Skip to content

界面管理器(IRocUIManager)

  • 接口RocPlay.Managers.UI.IRocUIManager
  • 默认实现RocUIManager[RocImplementation(typeof(IRocUIManager), Priority = 0)]
  • 源码目录Assets/RocPlay/Managers/UI/

历史上 Docs/99-Archive/Managers/UI.md 有过更口语化的入门叙述;当前以本站 + Assets/RocPlay 源码为准Task 异步PanelAssetPrefixRocPlay.RocUI 语法糖)。

先读 最小心智模型,再按需打开分册。


最小心智模型

  1. 谁在什么时候可用RocBootstrap 对管理器做完 Init / Start 后,业务用 RocCenter.Resolve<IRocUIManager>()RocPlay.RocUI 调 UI;不要在引导完成前 Resolve
  2. 面板名如何变成资源OpenPanelAsync("逻辑名", layer) 中的 "逻辑名"RocUIConfig.PanelAssetPrefix 拼成 keyRocUIPanelFactoryTryGet<IRocResourceService> 成功时 LoadAssetAsync<GameObject>(key),否则 Resources.Load(见 配置与加载)。
  3. 面板挂在哪:各 RocUILayer 对应 RocUICanvasBridge 创建的 Canvas;预制体实例化到该层 RectTransform 根下,嵌套 CanvassortingOrder 由层基础值 + RocUIPanel.SortOrder 组成(见 API 与调用面板)。
  4. 业务写在哪:脚本继承 RocUIPanel,重写 OnShow / OnShow<T> / OnHideShow / Show<T> 由管理器驱动(见 面板)。
  5. 和全局事件的分工:面板之间少用硬引用;跨模块用 RocEventBusRocUIResolve 二选一为主风格(见 RocUI 静态门面)。

能力一览

  • 分层 UIFixed / Normal / Popup / Tip / Top 各一层 Canvas;SortOrder(0~99)微调同层顺序。
  • 异步打开/关闭OpenPanelAsync(泛型 / 带数据)、OpenModalPanelAsyncClosePanelCloseAllPanelsCloseLayer
  • 查询与预载GetPanelIsPanelOpenPreloadPanelAsync 等。
  • 缓存:工厂缓存预制体与已创建面板实例。
  • 事件OnPanelOpened / OnPanelClosed(管理器级);面板另有 OnPanelShow / OnPanelHide

UI 层级(RocUILayer)

枚举值即该层 Canvas 基础 sortingOrderRocUILayerConfig.GetSortOrder)。

层级枚举数值典型用途
Fixed0背景、常驻 HUD
Normal100主界面、普通窗口
Popup200弹窗、对话框
Tip300飘字、Toast
Top400全屏加载、顶层遮罩

每层 Canvas 名形如 NormalCanvasRocUILayerConfig.GetCanvasName)。


文档分册

分册内容
配置与加载RocUIConfigPanelAssetPrefix、资源服务与 Resources 分支、注意事项
API 与调用典型异步调用IRocUIManager 方法/事件表、已打开面板时的行为提示
Components 组件库Assets/RocPlay/Managers/UI/Components 按组件拆分(每个组件独立页 + 最小示例代码)
RocUI 静态门面RocPlay.RocUIManagerInstance、静态成员映射与使用约定
示例打开/关闭带数据弹窗模态框预加载
面板与目录RocUIPanel 生命周期、预制体要求、源码目录、RocLog 最小示例

管理器层总览

参考:Assets/RocPlay/Managers/UI/