Skip to content

Desuq Cafe

文档菜单

此翻译可能落后于最新的英文版本。 查看英文版

持久化数据

OBS 提供了一个由插件专属管理的键值存储。使用它可以记录每次推流或每个配置文件的少量状态信息,无需在项目旁边附带单独的配置文件。数据在 OBS 重启后依然保留。

这些函数通过 GetClient()->GetConfig() 调用。

函数

函数说明
GetPersistentData(Realm, SlotName)异步获取一个槽位,触发 OnPersistentDataReceived。结果也会被缓存。
SetPersistentData(Realm, SlotName, SlotValueJson)存储一个 JSON 值(若 JSON 无效则返回 false,传入空值会清除该槽位)
SetPersistentDataString(Realm, SlotName, Value)存储一个纯字符串值
GetCachedPersistentData(Realm, SlotName)从本地缓存中读取之前已获取的槽位

Realm 是一个 EOBSDataRealm 枚举值:

作用范围
EOBSDataRealm::Global所有 OBS 配置文件中持久保留
EOBSDataRealm::Profile仅限当前配置文件

示例

UInhyeongOBSConfig* Config = Subsystem->GetClient()->GetConfig();

// Store a plain string in the global realm.
Config->SetPersistentDataString(
    EOBSDataRealm::Global, TEXT("LastSceneTheme"), TEXT("Cozy"));

// Fetch it back later (async, handle in OnPersistentDataReceived).
Config->GetPersistentData(EOBSDataRealm::Global, TEXT("LastSceneTheme"));

// Or read the cached value directly after a prior fetch.
FString Cached =
    Config->GetCachedPersistentData(EOBSDataRealm::Global, TEXT("LastSceneTheme"));

注意: 若提供的 JSON 无效,SetPersistentData 将返回 false(此时不会发送任何内容)。传入空值会清除该槽位。

另请参阅