cneicy d6b1940982
Publish UPM package / publish (push) Successful in 2s
Publish NuGet packages / publish (push) Successful in 4m11s
chore: align SDK dependencies and document reusable capabilities
2026-09-29 10:14:44 +08:00
2026-08-28 04:31:03 +08:00

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 特性:

[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<T>() 内部使用 Convert.ChangeType,只应在设置值确实可转换时调用。

可复用能力

Capability: 将存档、加载、迁移、删除和设置生命周期转为事件 Aliases: 存档事件 保存完成 加载结果 Limits: 事件只反馈存档行为;不会赋予订阅者写权限 Extension: 桥注册与撤回;类型化生命周期事件 Evidence: DataSaverEventBusBridge

S
Description
ShrinkSDK Unity UPM package.
Readme
66 KiB
Languages
C# 100%