
إحصاءات اللاعب
سجّل العدادات والأرقام القياسية الشخصية لكل لاعب.
حزم 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 الخاصة بهما: راجع البدء السريع
