Облачные сохранения

Храните 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 КБ на документ и до 100 ключей на игрока.
  • Ключи могут содержать латинские буквы, цифры, точки, дефисы и подчёркивания (до 80 символов).
  • Общий объём хранилища на аккаунт зависит от тарифа (см. Лимиты); при его превышении сохранения завершаются ошибкой plan_limit, а данные не удаляются.

Поиск по названиям страниц, заголовкам и тексту.

↑↓ навигация ↵ открыть Esc закрыть