# 外部集成 ## 总览 - 这个仓库外部依赖不多,主要是 Unity 运行时、Unity 编译管线、文件系统和少量第三方包。 - 没有发现数据库、网络 API、认证服务、WebHook、云函数等后端集成代码。 ## Unity 平台能力 - `Assets/Modules/ShrinkEventBus/Runtime/EventAutoRegHelper.cs` - 使用 `RuntimeInitializeOnLoadMethod` 参与运行时初始化。 - `Assets/Modules/ShrinkDataSaver/Runtime/ShrinkDataSaverBootstrap.cs` - 依赖 `Application.persistentDataPath` - 依赖 `DontDestroyOnLoad` - 在 `OnApplicationQuit` 和 `OnApplicationPause` 里刷写设置 - `Assets/Modules/ShrinkDataSaver/Runtime/ShrinkDataSaverSettings.cs` - 使用 `Resources.Load` - 编辑器下回退到 `UnityEditor.AssetDatabase` ## 第三方包 - `com.cysharp.unitask` - 用于异步事件处理与异步文件操作 - 关键落点:`Assets/Modules/ShrinkEventBus/Runtime/EventBus.cs` - 关键落点:`Assets/Modules/ShrinkDataSaver/Runtime/ShrinkSave.cs` - 关键落点:`Assets/Modules/ShrinkDataSaver/Runtime/ShrinkSettings.cs` - `com.unity.nuget.newtonsoft-json` - 用于 JSON 序列化、JObject 迁移链和弱类型数据缓存 - 关键落点:`Assets/Modules/ShrinkDataSaver/Runtime/DataSerializer.cs` - 关键落点:`Assets/Modules/ShrinkDataSaver/Runtime/MigrationChain.cs` - 关键落点:`Assets/Modules/ShrinkDataSaver/Runtime/SaveTypes.cs` ## 编译管线集成 - `Assets/Modules/ShrinkEventBus/CodeGen/Editor/EventBusILPostProcessor.cs` - 接入 `Unity.CompilationPipeline.Common.ILPostProcessing` - 使用 Mono.Cecil 改写带 `[EventBusSubscriber]` 的 `MonoBehaviour` - `Assets/Modules/ShrinkEventBus/CodeGen/Editor/PostProcessorAssemblyResolver.cs` - `Assets/Modules/ShrinkEventBus/CodeGen/Editor/PostProcessorReflectionImporter.cs` ## 模块间集成 - `Assets/Modules/ShrinkDataSaver.Integration.EventBus/DataSaverEventBusBridge.cs` - 将 `ShrinkDataSaver` 的原生事件桥接到 `ShrinkEventBus` - 桥接方向是单向的:`ShrinkDataSaver -> ShrinkEventBus` - `Assets/Modules/ShrinkDataSaver.Integration.EventBus/DataSaverEvents.cs` - 定义桥接后的 9 个事件类型 ## 本地存储集成 - `Assets/Modules/ShrinkDataSaver/Runtime/IStorageProvider.cs` - 定义存储抽象 - `Assets/Modules/ShrinkDataSaver/Runtime/LocalStorageProvider.cs` - 当前唯一实现 - 使用本地文件系统读写、删除、列举文件 - 采用 `.tmp` 文件再替换的方式降低写坏文件的概率 ## 编辑器集成 - `Assets/Modules/ShrinkEventBus/Editor/EventBusViewerWindow.cs` - 通过 Unity 菜单打开事件查看器 - `Assets/Modules/ShrinkDataSaver/Editor/ShrinkDataSaverEditorWindow.cs` - 通过 Unity 菜单操作设置与存档 ## 未发现的外部依赖 - 未发现 HTTP 客户端调用。 - 未发现数据库连接代码。 - 未发现 OAuth、Steamworks、Firebase、PlayFab、Addressables 等 SDK 实际接入代码。 - README 中提到 Steam Cloud 场景,但当前仓库里没有直接调用 Steam API 的实现。 ## 结论 - 该仓库的“集成”重点不是远程服务,而是 Unity 生命周期、编译后处理、文件系统和模块间桥接。 - 如果后续要扩展云存档、远程同步或遥测,这里目前只有存储接口和事件桥接两个自然扩展点。