主题
基础服务
Assets/RocPlay/Services 中通过 IRocService 暴露六类可解析服务,统一用 RocCenter.Resolve<接口>() 获取。生命周期为 Init / Start / Stop / Dispose(以接口定义为准)。主程序集 asmdef 名为 RocPlay。
六项均有 总览 + 分册读序,但分册名与粒度按服务不同(例如存储仅 键值 + 示例,资源为 加载 / 门面 / 示例,消息队列为 入队 / 桥接与 EventBus / 示例);历史叙述见 Docs/99-Archive/Services/、DocsPublish/Phase2/Services/,事实以 Assets/RocPlay/Services 与本站为准。
最小心智模型
- 先 Bootstrap 再 Resolve:服务由
RocBootstrap与规划器统一Init/Start,业务只RocCenter.Resolve<T>(),勿手写服务生命周期。 - 六契约是「基础设施」:资源、存储、网络、队列、对象池;与
IRocManager、IRocPlugin分层配合。 - 实现可替换:默认实现带
[RocImplementation(..., Priority = 0)];扩展可用更高Priority覆盖(尤其IRocResourceService)。 - HTTP 不是
IRocService:短连用RocHttpUtils(HTTP);长连 TCP 服务 / WebSocket 服务。 - 引导顺序:在
RocBootstrap中,Services 先于 Managers 与 Plugins 完成启动期的Init/Start。
六项 IRocService 索引
| # | 接口 | 默认实现(均带 [RocImplementation]) | 说明 |
|---|---|---|---|
| 1 | IRocResourceService | RocResourceService(Resources) | 资源服务 |
| 2 | IRocStorageService | RocStorageService | 存储服务 |
| 3 | IRocTcpService | RocTcpService | TCP 服务 |
| 4 | IRocWebSocketService | 条件编译下 RocWebSocketService 或 RocWebSocketWebGlService | WebSocket 服务 |
| 5 | IRocMessageQueueService | RocMessageQueueService + 桥接 Update | 消息队列 |
| 6 | IRocPoolService | RocPoolService | 对象池 |
与引导顺序的关系
在 RocBootstrap 中,Services 先于 Managers 与 Plugins 完成启动期的 Init / Start。
常见搭配(非上述六契约)
- HTTP 短连:
RocHttpUtils(RocPlay.Utils.Http),不是IRocService。专页 HTTP(含与 Tcp/WebSocket 分工表)。 - Task 主线程/超时/重试:
RocTaskHelper(RocPlay.Utils.TaskHelper),静态工具,见 Task增强。 - 更高级资源:可在扩展中提供更高
Priority的IRocResourceService实现(例如 Addressables 扩展),通过[RocImplementation]覆盖默认Resources实现。
使用方式(共性)
- 实现
IRocService(Init/Start/Stop/Dispose)。 - 对管理器与插件提供基础设施,典型写法:
csharp
var ws = RocCenter.Resolve<IRocWebSocketService>();
// 具体方法以接口为准IRocService 与生命周期
六项服务均继承 IRocService → IRocLifecycle + IDisposable:
| 阶段 | 方法 | 典型用途 |
|---|---|---|
| 注册后首次拉起 | Init() | 读配置、建内部状态,勿假设其他服务已 Start 完毕 |
| 启动完成 | Start() | 开始对外提供服务(监听、桥接 Update 等) |
| 关服/切场景前 | Stop() | 停监听、刷盘、与 Start 对称收束 |
| 释放 | Dispose() | 释放原生句柄、取消订阅 |
业务侧一般只 RocCenter.Resolve<T>() 取接口并调用成员方法;不要在业务里手动调服务的 Init/Start(由 RocBootstrap + 规划器统一调用)。
下一步
- 管理器层:六种内置
IRocManager总览与 UI / Audio / Scene / Input / Data / Pool 分册。