云存档

按键存储每位玩家的 JSON 文档,并带有修订号,两台设备永远不会悄无声息地互相覆盖。

代码注释和 API 名称保留英文,以便与 SDK 保持一致。

本页内容

保存#

将任何可序列化对象(Unity)或 JSON 值保存在某个键下。每次保存都会获得下一个修订号。

C#
[System.Serializable]
public class Progress { public int level; public int coins; }

var saved = await Majacloud.CloudSave.SaveAsync("progress", new Progress { level = 3, coins = 120 });
if (saved.Ok) Debug.Log("Saved revision " + saved.Value.Revision);

加载#

加载从未保存过的键会返回 not_found:请将其视为首次启动。

C#
var loaded = await Majacloud.CloudSave.LoadAsync<Progress>("progress");
if (loaded.Ok) progress = loaded.Value.Data;
else if (loaded.IsNotFound) progress = new Progress(); // first launch

修订号和冲突#

将加载时得到的修订号作为预期修订号传入。如果其他设备在此期间保存过,保存会失败并返回 revision_mismatch 和 details.current_revision;请重新加载、合并后再试。预期修订号为 0 表示仅创建。

C#
// Only overwrite the revision we loaded; another device may have saved since
var safe = await Majacloud.CloudSave.SaveAsync("progress", progress, expectedRevision: loaded.Value.Revision);
if (!safe.Ok && safe.Error.Code == MajacloudErrorCode.RevisionMismatch)
{
    // Load again, merge, and save with the new revision
}

列出和删除#

列出玩家的键及其修订号和大小,并删除不再需要的键:

C#
var keys = await Majacloud.CloudSave.ListAsync();
foreach (var entry in keys.Value) Debug.Log(entry.Key + " r" + entry.Revision + " " + entry.SizeBytes + " B");

await Majacloud.CloudSave.DeleteAsync("old_slot");

限制#

  • 每个文档最多 256 KB,每位玩家最多 100 个键。
  • 键可以包含字母、数字、点、短横线和下划线(最多 80 个字符)。
  • 每个账号的总存储空间取决于套餐(参见限制);超出后保存会失败并返回 plan_limit,不会删除任何数据。

搜索页面标题、小标题和正文。

↑↓ 选择 ↵ 打开 Esc 关闭