플레이어 통계

플레이어 통계

플레이어별 카운터와 개인 최고 기록을 저장하세요.

무료로 시작하기

플레이어 통계

플레이어별 카운터와 개인 최고 기록을 저장하세요.

SDK 및 REST

Unity, Godot, Unreal과 통합하거나 REST 인터페이스를 사용하세요.

프로젝트 대시보드

프로젝트에서 각 기능을 설정하고 현재 데이터를 관리하세요.

빠른 통합

빠른 통합

플레이어 통계
동영상 준비 중

라운드, 처치 수, 최고 기록을 세션별로 한 번에 보고하고 합계, 최댓값, 최솟값 또는 최신값으로 계산합니다.

빠른 통합
Unity (C#)
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으로 게임 백엔드를 구축하세요. 무료 플랜 포함.