# 目录结构 ## 顶层结构 - `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`。