
Статистика игроков
Сохраняйте счётчики и личные рекорды каждого игрока.
SDK и REST
Интегрируйте Unity, Godot или Unreal либо используйте интерфейс REST.
Панель проекта
Настраивайте функции и управляйте текущими данными в своём проекте.
Быстрая интеграция
Статистика игроков
Видео скоро появится
Сообщайте раунды, убийства и рекорды одним пакетом сессии: сумма, максимум, минимум или последнее значение.
using UnityEngine;
using PM.horizOn.Cloud.Manager;
using PM.horizOn.Cloud.Objects.Network.Requests;
var manager = StatisticsManager.Instance;
var snapshot = await manager.GetStatistics();
if (snapshot == null) { Debug.LogWarning(manager.LastErrorCode); return; }
string pendingKey = "horizOn_statistics_pending_" + snapshot.userId;
var pending = PlayerPrefs.HasKey(pendingKey)
? JsonUtility.FromJson<UpdateStatisticsRequest>(PlayerPrefs.GetString(pendingKey))
: new UpdateStatisticsRequest {
userId = snapshot.userId, operationId = manager.CreateOperationId(),
updates = new[] { new StatisticUpdate("kills", 3), new StatisticUpdate("best_score", 250) }
};
string originalJson = JsonUtility.ToJson(pending);
PlayerPrefs.SetString(pendingKey, originalJson);
PlayerPrefs.Save();
var result = await manager.UpdateStatistics(pending.updates, pending.operationId);
if (result == null) {
// Keep the saved ID and batch. Reconcile OPERATION_EXPIRED before a new logical report.
Debug.LogWarning(manager.LastErrorCode);
return;
}
// A late success for O1 must never acknowledge a newer pending O2.
if (PlayerPrefs.GetString(pendingKey, null) == originalJson) {
PlayerPrefs.DeleteKey(pendingKey);
PlayerPrefs.Save();
}
foreach (var counter in result.values) Debug.Log(counter.key + "=" + counter.value);В этих примерах используются Unity SDK (C#) и REST API. В Godot и Unreal те же вызовы есть в их собственных SDK: см. краткое руководство
Часто задаваемые вопросы
Готовы к интеграции?
Начните работу с horizOn уже сегодня. Free Tier включён.
