云端存储以玩家的 FRVR 鉴权会话为 key —— 跟随玩家跨设备、跨浏览器、跨渠道。
API 形态与 本地存储 一致,只是持久化层不同。
await FRVRSDK.instance.cloudStorageSetItem('save', gameState);
const save = await FRVRSDK.instance.cloudStorageGetItem('save');
if (save) restoreGame(save);
await FRVRSDK.instance.cloudStorageRemoveItem('save');
值需要可 JSON 序列化 —— 序列化由封装层处理。
await FRVRSDK.instance.cloudStorageSetItems([
{ key: 'save', value: gameState },
{ key: 'unlocked', value: unlockedSet },
]);
const items = await FRVRSDK.instance.cloudStorageGetItems(['save', 'unlocked']);
await FRVRSDK.instance.cloudStorageRemoveItems(['legacy_save_v1']);
云端值缺失可能意味着:
- 真的是个新玩家
- 本次会话鉴权还没完成
- 网络一时抖动
如果你打算 因为 读不到东西就直接写一份新存档,先做去抖 —— 短延迟后再读一次,或等鉴权完成,只有在确认鉴权就绪后,才把”空”当作”新玩家”。
const save = await FRVRSDK.instance.cloudStorageGetItem('save');
if (!save) {
// TODO:在把这视作新账号之前,先确认玩家已通过鉴权
}
参见 本地存储 § 何时用本地、何时用云端。