持久化数据
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(此时不会发送任何内容)。传入空值会清除该槽位。