Files
cneicy d74c2f08ca feat(packages): 内置 SDK 包并完善 ContextLoader 集成
- 将 ShrinkEventBus、ShrinkDataSaver 及其 EventBus 集成从 gitlink 转为仓库直接维护的完整 UPM 包,补齐运行时、编辑器工具、测试与文档
- 新增 Command 和 Network 的 App 集成组件,支持 ContextLoader 服务发布、可逆注销及 Network Loopback 生命周期管理
- 更新 Starter 与演示组合逻辑,缺失模块时可注册、已有兼容安装器时可覆盖,并补充宿主启动断言
- 升级内部包依赖与 Shared CodeGen 包定义,放宽 Integration.App 包的 Git 忽略规则
- 将独立服务器生成器改为基于已编译程序集的语义扫描,支持 partial、复杂泛型、命名冲突检测及模板 SHA-256 覆写保护
- 新增 Network 语义扫描、模板保护和 App 组件生命周期测试
- 新增真实 UPM 消费工程验证脚本,校验内部版本一致性、程序集加载及 EditMode 测试
- 重构当前架构文档并归档已完成的 Cordis 迁移与旧代码地图
2026-08-18 18:06:34 +08:00

120 lines
4.2 KiB
Markdown

# 目录结构
## 顶层结构
- `Assets`
- 核心源码、编辑器扩展、测试、示例场景和包描述文件都在这里
- `Packages`
- Unity 包清单与锁文件
- `ProjectSettings`
- Unity 版本、渲染、输入、构建场景等项目配置
- `Library``Temp``Logs``obj`
- Unity 生成目录,不属于源码地图重点
## Assets 下的主要模块
## `Assets/Modules/ShrinkEventBus`
- `Runtime`
- 事件总线核心实现
- `Editor`
- 事件查看器窗口
- `CodeGen/Editor`
- IL Post Processor 与 Cecil 辅助类
- `README.md`
- `package.json`
- `Benchmark.txt`
## `Assets/Modules/ShrinkDataSaver`
- `Runtime`
- 存档、设置、迁移、加密、存储抽象与配置
- `Editor`
- 数据查看器窗口
- `Tests`
- NUnit 与 Unity Test Runner 测试
- `README.md`
- `package.json`
## `Assets/Modules/ShrinkDataSaver.Integration.EventBus`
- `DataSaverEvents.cs`
- `DataSaverEventBusBridge.cs`
- `README.md`
- `package.json`
- `ShrinkDataSaver.Integration.EventBus.asmdef`
## `Assets/Modules/ShrinkModFramework`
- `Editor/Scaffolding`
- Mod SDK 导出器、外部 DLL 模组模板生成器、仓库内模组模板生成器与模板文件
- `Runtime/Bootstrap`
- 自动启动、运行时驱动、设置资产与可选场景入口
- `Runtime/Core`
- `IShrinkMod``ShrinkModBase``ShrinkModContext``ShrinkModHandle`
- `Runtime/Metadata`
- 模组特性、依赖、状态、版本信息
- `Runtime/Registry`
- 模组注册表与注册表管理器
- `Runtime/Loading`
- 模组发现、依赖排序、外部 DLL 装载、Harmony 接入
- `Runtime/Network`
- 模组网络抽象层
- `Runtime/Integration`
-`ShrinkEventBus``ShrinkCommand``ShrinkNetwork` 的可选自动接入胶水
- `README.md`
- `package.json`
- `Runtime/ShrinkModFramework.Runtime.asmdef`
## 其他目录
- `Assets/Scenes/SampleScene.unity`
- 当前唯一启用的示例场景
- `Assets/Settings`
- URP 资源和场景模板
## 关键文件入口
- 事件系统入口:`Assets/Modules/ShrinkEventBus/Runtime/EventBus.cs`
- 事件订阅反射注册:`Assets/Modules/ShrinkEventBus/Runtime/EventBusRegHelper.cs`
- 事件订阅编译织入:`Assets/Modules/ShrinkEventBus/CodeGen/Editor/EventBusILPostProcessor.cs`
- 存档系统入口:`Assets/Modules/ShrinkDataSaver/Runtime/ShrinkSave.cs`
- 设置系统入口:`Assets/Modules/ShrinkDataSaver/Runtime/ShrinkSettings.cs`
- Unity 启动器:`Assets/Modules/ShrinkDataSaver/Runtime/ShrinkDataSaverBootstrap.cs`
- 模块桥接入口:`Assets/Modules/ShrinkDataSaver.Integration.EventBus/DataSaverEventBusBridge.cs`
- 模组框架启动入口:`Assets/Modules/ShrinkModFramework/Runtime/Bootstrap/ShrinkModRuntimeBootstrap.cs`
- 模组装载入口:`Assets/Modules/ShrinkModFramework/Runtime/Loading/ShrinkModLoader.cs`
- 模组模板生成入口:`Assets/Modules/ShrinkModFramework/Editor/Scaffolding/ShrinkExternalModTemplateGenerator.cs`
- 仓库内模组模板生成入口:`Assets/Modules/ShrinkModFramework/Editor/Scaffolding/ShrinkInRepoModTemplateGenerator.cs`
- Mod SDK 导出入口:`Assets/Modules/ShrinkModFramework/Editor/Scaffolding/ShrinkModSdkExporter.cs`
## 命名组织规律
- 包名与目录名基本一一对应:`ShrinkEventBus``ShrinkDataSaver``ShrinkDataSaver.Integration.EventBus`
- `ShrinkModFramework` 继续遵循同样规则,并在 `Runtime` 下进一步按职责拆子目录
- 命名空间与 asmdef 名称基本一致:
- `ShrinkEventBus`
- `ShrinkEventBus.Editor`
- `ShrinkEventBus.CodeGen`
- `ShrinkDataSaver`
- `ShrinkDataSaver.Editor`
- `ShrinkDataSaver.Integration`
- 编辑器专属代码全部放在 `Editor` 目录下,符合 Unity 约定。
## 解决方案结构
- `ShrinkSDK.sln` 暴露了 8 个 C# 工程:
- `ShrinkEventBus.Runtime`
- `ShrinkEventBus.Editor`
- `Unity.ShrinkEventBus.CodeGen`
- `ShrinkDataSaver.Runtime`
- `ShrinkDataSaver.Editor`
- `ShrinkDataSaver.Tests`
- `ShrinkDataSaver.Integration.EventBus`
- `Assembly-CSharp`
## 结论
- 结构上最值得注意的是:这是按“可发布 Unity 包”来组织,而不是按单一游戏功能目录来组织。
- 阅读顺序建议先从 `Runtime`,再到 `Editor`,最后看 `Tests``README.md`