# ShrinkDataSaver.Integration.EventBus 把 ShrinkDataSaver 的设置、保存、加载、迁移和删除生命周期发布为 ShrinkEventBus 2.0 事件。 Godot 和普通 .NET 项目安装 `ShrinkSDK.DataSaver.Integration.EventBus`;可打包源码位于 `DotNet~`。 ContextLoader 通过 `ShrinkDataSaverEventBusComponent` 管理桥生命周期;独立宿主调用 `DataSaverEventBusBridge.Register()`,退出时调用 `Unregister()`。 事件均实现 `IShrinkEvent`: - `SettingsChangedEvent` - `SaveStartedEvent` / `SaveCompletedEvent` / `SaveFailedEvent` - `LoadStartedEvent` / `LoadCompletedEvent` / `LoadFailedEvent` - `MigrationCompletedEvent` - `SlotDeletedEvent` 订阅只使用 2.0 特性: ```csharp [ShrinkEventSubscriber(DefaultBus = "game")] public sealed class SaveUiHandlers { [ShrinkSubscribe] private void OnSaved(SaveCompletedEvent value) { Debug.Log($"slot {value.SlotIndex} saved"); } [ShrinkSubscribe(Priority = ShrinkEventPriority.Low)] private void OnLoadFailed(LoadFailedEvent value) { Debug.LogError(value.ErrorMessage); } } using var binding = EventBus.Attach(new SaveUiHandlers()); ``` 桥接方向是 DataSaver -> EventBus,发布使用 `EventBus.Post(...)`。没有手工 Delegate 注册或旧 Trigger API。 `SettingsChangedEvent.Get()` 内部使用 `Convert.ChangeType`,只应在设置值确实可转换时调用。 ## 可复用能力 Capability: 将存档、加载、迁移、删除和设置生命周期转为事件 Aliases: 存档事件 保存完成 加载结果 Limits: 事件只反馈存档行为;不会赋予订阅者写权限 Extension: 桥注册与撤回;类型化生命周期事件 Evidence: [DataSaverEventBusBridge](DataSaverEventBusBridge.cs)