- 将 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 迁移与旧代码地图
120 lines
4.2 KiB
Markdown
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`。
|