# 技术栈 ## 项目定位 - 这是一个 Unity SDK 型仓库,不是完整游戏项目。 - 当前 Unity 版本是 `2022.3.62f3`,见 `ProjectSettings/ProjectVersion.txt`。 - 当前仅配置了一个示例场景 `Assets/Scenes/SampleScene.unity`,见 `ProjectSettings/EditorBuildSettings.asset`。 ## 运行时基础 - 核心语言是 C#,通过 Unity asmdef 拆分模块。 - 根解决方案是 `ShrinkSDK.sln`,包含 `ShrinkEventBus`、`ShrinkDataSaver`、集成层、编辑器扩展和测试项目。 - 运行时代码主要在: - `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` - 依赖 `UniTask` 与 `Newtonsoft.Json` - `Assets/Modules/ShrinkDataSaver.Integration.EventBus/package.json` - 包名 `com.cneicy.shrink-datasaver-integration-eventbus` - 版本 `2.0.0` - 依赖 `ShrinkDataSaver` 与 `ShrinkEventBus` ## 程序集拆分 - `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、状态机或第三方测试平台。