クラウドセーブ

プレイヤーごとの JSON ドキュメントをキー単位で保存します。リビジョンがあるため、2 台のデバイスが知らないうちに互いのデータを上書きすることはありません。

コードのコメントと 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");

制限#

  • 1 ドキュメントあたり最大 256 KB、1 プレイヤーあたり最大 100 キー。
  • キーには英字、数字、ドット、ハイフン、アンダースコアを使用できます(最大 80 文字)。
  • アカウントあたりの合計ストレージはプランによって異なります(制限を参照)。上限を超えると保存は plan_limit で失敗しますが、データが削除されることはありません。

ページタイトル、見出し、本文を検索します。

↑↓ で移動 ↵ で開く Esc で閉じる