架构与数据流
一套面向 Unity 2022.3 的 DOTS / ECS 数据驱动游戏框架——配置、本地化、行为树全部是 Blob;UI 就是 ECS System;世界无关的静态查询。
命名空间 HYC.Framework.*;生成的配置类落 {root}.config,BT 自定义节点落 {root}.BT.Nodes(root 见 HYC Settings → CodeGen)。
数据流四阶段
[生成期] 模板/Excel/行为树资产 → 代码生成 + 数据编辑
↓
[A0/A1 引导期] 装单例、加载配置表、读启动参数 → 注册到 ConfigRegistry
↓
[A2/A3 运行期] 房间/场景、模拟、技能、AI、战斗
↓
[B9 表现期] UI 最后跑,读一帧前已算好的状态
更新组顺序固定:A0 → A1 → A2 → A3 → B9(都在 UpdateGroup_Root 下)。UI 永远最后刷新,所以玩法改的值下一帧 UI 才看到——这是设计,不是延迟。
模块地图
| 模块 | 核心类 | 一句话 |
|---|---|---|
| 配置 | {ns}.ConfigManager / ConfigRegistry | 生成式门面,宿主唯一查询入口 |
| 本地化 | LocalizationManager / LocalizationBlobSystem | Blob 多语言,自动从 StreamingAssets 加载 |
| 行为树 | BTInterpreterSystem / BTInterpreter | 指针遍历 BTRootBlob |
| ECS UI | UIManager / AbsUISystem | UI 即 System,B9 最后运行 |
| 引导 | FrameworkBootstrap / FrameworkWorld | 世界与系统装配 |
| 消息 | MessageEntity / MessageClearSystem / MessageExpirySystem | 单帧消息 + 帧末清理 |
| Blob 基础 | BlobTable | Blob 辅助 |
四条设计红线
✕
1. 新增脚本必须连
2. Blob 里的类型必须 blittable——不能放托管对象;字符串要走
3. 消息不过帧——不要指望跨帧还能读到
4. BT 编辑器代码禁止
.meta 一起提交——漏了会导致别人 clone 后 GUID 重建、引用全断。2. Blob 里的类型必须 blittable——不能放托管对象;字符串要走
BlobString / FixedString。3. 消息不过帧——不要指望跨帧还能读到
MessageEntity。4. BT 编辑器代码禁止
using NodeCanvas/ParadoxNotion——只移植逻辑与视觉数值。
三条最重要的使用约定
- 创建配置必须走
ConfigAssetFactory,创建行为树必须走BTAssetFactory——禁止ScriptableObject.CreateInstance<T>()+ 手填ID/GUID/TreeId。绕过工厂会导致跨工程 ID 冲突、子树引用错树。 - 配置行必须 ref 接收:
ref var row = ref ConfigManager.{Type}.GetByID(id);——值拷贝 blob 行 = 寻址错位,是运行期炸弹。 - 生成物禁手改——一律走重新生成。
◈
想按任务一步步做(「我要配一张表」「我要写一个界面」),看 操作手册;要查某个类的具体行为,看左侧对应模块页。