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

3.4 KiB

技术栈

项目定位

  • 这是一个 Unity SDK 型仓库,不是完整游戏项目。
  • 当前 Unity 版本是 2022.3.62f3,见 ProjectSettings/ProjectVersion.txt
  • 当前仅配置了一个示例场景 Assets/Scenes/SampleScene.unity,见 ProjectSettings/EditorBuildSettings.asset

运行时基础

  • 核心语言是 C#,通过 Unity asmdef 拆分模块。
  • 根解决方案是 ShrinkSDK.sln,包含 ShrinkEventBusShrinkDataSaver、集成层、编辑器扩展和测试项目。
  • 运行时代码主要在:
    • Assets/Modules/ShrinkEventBus/Runtime
    • Assets/Modules/ShrinkDataSaver/Runtime
    • Assets/Modules/ShrinkDataSaver.Integration.EventBus

Unity 包依赖

  • Packages/manifest.json 中可确认以下关键依赖:
    • com.cysharp.unitask
    • com.unity.nuget.newtonsoft-json
    • com.unity.test-framework
    • com.unity.ugui
    • com.unity.textmeshpro
    • com.unity.timeline
    • com.unity.render-pipelines.universal

仓库内 SDK 包

  • Assets/Modules/ShrinkEventBus/package.json
    • 包名 com.cneicy.shrink-eventbus
    • 版本 1.1.4
    • 依赖 UniTask
  • Assets/Modules/ShrinkDataSaver/package.json
    • 包名 com.cneicy.shrink-datasaver
    • 版本 2.0.0
    • 依赖 UniTaskNewtonsoft.Json
  • Assets/Modules/ShrinkDataSaver.Integration.EventBus/package.json
    • 包名 com.cneicy.shrink-datasaver-integration-eventbus
    • 版本 2.0.0
    • 依赖 ShrinkDataSaverShrinkEventBus

程序集拆分

  • Assets/Modules/ShrinkEventBus/Runtime/ShrinkEventBus.Runtime.asmdef
  • Assets/Modules/ShrinkEventBus/Editor/ShrinkEventBus.Editor.asmdef
  • Assets/Modules/ShrinkEventBus/CodeGen/Editor/Unity.ShrinkEventBus.CodeGen.asmdef
  • Assets/Modules/ShrinkDataSaver/Runtime/ShrinkDataSaver.Runtime.asmdef
  • Assets/Modules/ShrinkDataSaver/Editor/ShrinkDataSaver.Editor.asmdef
  • Assets/Modules/ShrinkDataSaver/Tests/ShrinkDataSaver.Tests.asmdef
  • Assets/Modules/ShrinkDataSaver.Integration.EventBus/ShrinkDataSaver.Integration.EventBus.asmdef

关键技术点

  • 事件系统使用泛型静态缓存与对象池优化热路径,入口在 Assets/Modules/ShrinkEventBus/Runtime/EventBus.cs
  • 自动注册依赖 Unity IL Post Processor 与 Mono.Cecil,入口在 Assets/Modules/ShrinkEventBus/CodeGen/Editor/EventBusILPostProcessor.cs
  • 存档系统使用 UniTask 处理异步 IO,入口在 Assets/Modules/ShrinkDataSaver/Runtime/ShrinkSave.cs
  • 序列化基于 Newtonsoft.Json,入口在 Assets/Modules/ShrinkDataSaver/Runtime/DataSerializer.cs
  • 加密使用 AES-CBC + PBKDF2-SHA256,入口在 Assets/Modules/ShrinkDataSaver/Runtime/SaveEncryptor.cs
  • 本地存储基于 Application.persistentDataPath 与文件系统,入口在 Assets/Modules/ShrinkDataSaver/Runtime/LocalStorageProvider.cs

编辑器与测试

  • 编辑器工具包括:
    • Assets/Modules/ShrinkEventBus/Editor/EventBusViewerWindow.cs
    • Assets/Modules/ShrinkDataSaver/Editor/ShrinkDataSaverEditorWindow.cs
  • 当前扫描到运行时相关文件约 62 个,编辑器相关文件约 16 个。
  • 测试主要集中在 Assets/Modules/ShrinkDataSaver/Tests,当前统计到 [Test]/[UnityTest] 标记共 78 个。

结论

  • 这是一个围绕 Unity 包分发设计的多模块 SDK 仓库。
  • 技术选择偏向 Unity 原生能力 + UniTask + Newtonsoft.Json,没有引入重量级 DI、状态机或第三方测试平台。