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

4.2 KiB

目录结构

顶层结构

  • Assets
    • 核心源码、编辑器扩展、测试、示例场景和包描述文件都在这里
  • Packages
    • Unity 包清单与锁文件
  • ProjectSettings
    • Unity 版本、渲染、输入、构建场景等项目配置
  • LibraryTempLogsobj
    • 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
    • IShrinkModShrinkModBaseShrinkModContextShrinkModHandle
  • Runtime/Metadata
    • 模组特性、依赖、状态、版本信息
  • Runtime/Registry
    • 模组注册表与注册表管理器
  • Runtime/Loading
    • 模组发现、依赖排序、外部 DLL 装载、Harmony 接入
  • Runtime/Network
    • 模组网络抽象层
  • Runtime/Integration
    • ShrinkEventBusShrinkCommandShrinkNetwork 的可选自动接入胶水
  • 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

命名组织规律

  • 包名与目录名基本一一对应:ShrinkEventBusShrinkDataSaverShrinkDataSaver.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,最后看 TestsREADME.md