跳转到内容

存储(Unity)

FRVRSDK.Data 是 Unity 封装包的存储接口。同一个命名空间暴露两种风味:

  • 本地存储(每台设备)—— SetItemGetItemRemoveItemRemoveItems
  • 云端存储(跨设备跟随玩家)—— SetCloudItemGetCloudItemRemoveCloudItemRemoveCloudItems

所有方法都基于回调。值是字符串 —— 自己用 JsonUtility.ToJson(…) 之类做对象序列化。

FRVRSDK.Data.SetItem("coins", "100", result => Debug.Log($"set: {result}"));

FRVRSDK.Data.GetItem("coins", value =>
{
    Debug.Log($"coins = {value}");   // value 是字符串或 null
});

FRVRSDK.Data.RemoveItem("coins", result => { /* 成功时 result == 1 */ });

string[] stale = { "run_temp", "tutorial_seen", "dev_flag" };
FRVRSDK.Data.RemoveItems(stale, result => { });

本地存储用于:

  • 偏好(mutedpreferred_hand)
  • 玩家可承受丢失的缓存(临时局内状态、资源缓存)
  • 设备特定设置
string saveJson = JsonUtility.ToJson(gameState);
FRVRSDK.Data.SetCloudItem("save", saveJson, result => Debug.Log($"saved: {result}"));

FRVRSDK.Data.GetCloudItem("save", value =>
{
    if (string.IsNullOrEmpty(value)) return;
    var state = JsonUtility.FromJson<GameState>(value);
    LoadState(state);
});

FRVRSDK.Data.RemoveCloudItem("save", result => { });

string[] keys = { "save_v1", "legacy_key" };
FRVRSDK.Data.RemoveCloudItems(keys, result => { });

云端存储放任何玩家会注意到丢失的东西:存档、解锁、内购发放的内容。

把云端读到的空当作”未知”,而不是”新用户”

Section titled “把云端读到的空当作”未知”,而不是”新用户””
FRVRSDK.Data.GetCloudItem("save", value =>
{
    if (string.IsNullOrEmpty(value))
    {
        // 可能是:真正的新玩家,或者 鉴权还没就绪。
        // 等一帧再重试,然后再决定是否覆盖成全新状态。
    }
});