- 将 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 迁移与旧代码地图
4.2 KiB
4.2 KiB
目录结构
顶层结构
Assets- 核心源码、编辑器扩展、测试、示例场景和包描述文件都在这里
Packages- Unity 包清单与锁文件
ProjectSettings- Unity 版本、渲染、输入、构建场景等项目配置
Library、Temp、Logs、obj- Unity 生成目录,不属于源码地图重点
Assets 下的主要模块
Assets/Modules/ShrinkEventBus
Runtime- 事件总线核心实现
Editor- 事件查看器窗口
CodeGen/Editor- IL Post Processor 与 Cecil 辅助类
README.mdpackage.jsonBenchmark.txt
Assets/Modules/ShrinkDataSaver
Runtime- 存档、设置、迁移、加密、存储抽象与配置
Editor- 数据查看器窗口
Tests- NUnit 与 Unity Test Runner 测试
README.mdpackage.json
Assets/Modules/ShrinkDataSaver.Integration.EventBus
DataSaverEvents.csDataSaverEventBusBridge.csREADME.mdpackage.jsonShrinkDataSaver.Integration.EventBus.asmdef
Assets/Modules/ShrinkModFramework
Editor/Scaffolding- Mod SDK 导出器、外部 DLL 模组模板生成器、仓库内模组模板生成器与模板文件
Runtime/Bootstrap- 自动启动、运行时驱动、设置资产与可选场景入口
Runtime/CoreIShrinkMod、ShrinkModBase、ShrinkModContext、ShrinkModHandle
Runtime/Metadata- 模组特性、依赖、状态、版本信息
Runtime/Registry- 模组注册表与注册表管理器
Runtime/Loading- 模组发现、依赖排序、外部 DLL 装载、Harmony 接入
Runtime/Network- 模组网络抽象层
Runtime/Integration- 对
ShrinkEventBus、ShrinkCommand、ShrinkNetwork的可选自动接入胶水
- 对
README.mdpackage.jsonRuntime/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 名称基本一致:
ShrinkEventBusShrinkEventBus.EditorShrinkEventBus.CodeGenShrinkDataSaverShrinkDataSaver.EditorShrinkDataSaver.Integration
- 编辑器专属代码全部放在
Editor目录下,符合 Unity 约定。
解决方案结构
ShrinkSDK.sln暴露了 8 个 C# 工程:ShrinkEventBus.RuntimeShrinkEventBus.EditorUnity.ShrinkEventBus.CodeGenShrinkDataSaver.RuntimeShrinkDataSaver.EditorShrinkDataSaver.TestsShrinkDataSaver.Integration.EventBusAssembly-CSharp
结论
- 结构上最值得注意的是:这是按“可发布 Unity 包”来组织,而不是按单一游戏功能目录来组织。
- 阅读顺序建议先从
Runtime,再到Editor,最后看Tests与README.md。