Pomysły i funkcje gry

Twoja następna funkcja

Statystyki gracza

Raportuj rundy, eliminacje i rekordy w jednym pakiecie sesji, jako sumę, maksimum, minimum lub ostatnią wartość.

SDK: developWymagana sesja gracza
Unity
Ilustracja funkcji Statystyki gracza
Widoczny rezultat

Gra zgłasza pełną sesję jednym pakietem i wyświetla aktualne liczniki i okresy.

Wideo pojawi się później

Ten krok nie ma jeszcze wideo. Instrukcja i polecenie MCP są już dostępne.

Statystyki gracza

Przygotuj ten sam projekt

  1. Wybierz w panelu ten sam projekt co w konfiguracji gry.

    Statystyki gracza →
  2. Utwórz lub wykorzystaj te wpisy testowe w formularzu panelu. To wartości przykładowe, nie aktualne dane projektu.

    Definicje statystyk
    kills: mode=sum, reset=none; best_score: mode=max, reset=none

    Suma dodaje każdy raport. Maksimum i minimum zachowują wartość skrajną; ostatnia ją zastępuje. Maksimum, minimum i ostatnia zaczynają od pierwszego raportu. Wartości to liczby całkowite ze znakiem w bezpiecznym zakresie.

  3. Zapisz, wczytaj ponownie i sprawdź wpisy przed uruchomieniem przykładu. Zachowaj pozostałe definicje.

Dodaj tę funkcję

Możesz przeglądać poradnik. Uruchomienie wymaga aktywnego klucza projektu. Przygotuj projekt

Zainstalowany SDK, zaimportowana konfiguracja projektu i zalogowany gracz.

Ten przykład SDK korzysta z develop. Sprawdź, czy wymagane API istnieją w zainstalowanym SDK.

Połącz wybranego gracza zgodnie z szybkim startem. Wywołaj RunReviewedAction() jawnym przyciskiem lub akcją sceny. Samo otwarcie pliku nie wysyła żądania.

C#
Assets/Scripts/StatisticsDemo.cs
Wywołanie horizOn
1using PM.horizOn.Cloud.Objects.Network.Requests;
2using UnityEngine;
3using PM.horizOn.Cloud.Core;
4using PM.horizOn.Cloud.Manager;
5​
6// Existing SDK/project configuration and authenticated player session required.
7// Call RunReviewedAction explicitly after reviewing this example and its data.
8// Najpierw odczytaj stan, potem zachowuj ten sam identyfikator operacji i
9// pierwotny pakiet przy ponawianiu. Wygasły lub niepewny wynik wymaga
10// weryfikacji, nigdy automatycznie nowego ID.
11// This explicit action reports the shown persisted batch.
12public sealed class StatisticsDemo : MonoBehaviour
13{
14 public async void RunReviewedAction()
15 {
16 var sessionUser = UserManager.Instance.CurrentUser;
17 if (sessionUser == null || !sessionUser.IsValid()) return;
18 var manager = StatisticsManager.Instance;
19 var snapshot = await manager.GetStatistics();
20 if (snapshot == null) { Debug.LogWarning(manager.LastErrorCode); return; }
21 string pendingKey = "horizOn_statistics_pending_" + snapshot.userId;
22 var pending = PlayerPrefs.HasKey(pendingKey)
23 ? JsonUtility.FromJson<UpdateStatisticsRequest>(PlayerPrefs.GetString(pendingKey))
24 : new UpdateStatisticsRequest {
25 userId = snapshot.userId, operationId = manager.CreateOperationId(),
26 updates = new[] { new StatisticUpdate("kills", 3), new StatisticUpdate("best_score", 250) }
27 };
28 string originalJson = JsonUtility.ToJson(pending);
29 PlayerPrefs.SetString(pendingKey, originalJson);
30 PlayerPrefs.Save();
31 var result = await manager.UpdateStatistics(pending.updates, pending.operationId);
32 if (result == null) {
33 // Keep the saved ID and batch. Reconcile OPERATION_EXPIRED before a new logical report.
34 Debug.LogWarning(manager.LastErrorCode);
35 return;
36 }
37 // A late success for O1 must never acknowledge a newer pending O2.
38 if (PlayerPrefs.GetString(pendingKey, null) == originalJson) {
39 PlayerPrefs.DeleteKey(pendingKey);
40 PlayerPrefs.Save();
41 }
42 foreach (var counter in result.values) Debug.Log(counter.key + "=" + counter.value);
43 }
44}
Otwórz pełny przykład SDK ↗

Przetestuj nową funkcję.

Gra zgłasza pełną sesję jednym pakietem i wyświetla aktualne liczniki i okresy.

Wybierz w panelu ten sam projekt co w konfiguracji gry.

Punkty końcowe
  • GET/statistics
  • GET/statistics/definitions
  • POST/statistics
Wszystkie punkty końcowe w dokumentacji API
Nasza propozycja następnego kroku

Daj każdej rundzie najlepszy wynik.

Zapisz wynik po rundzie i pokaż, kto prowadzi. Nadal korzystaj z połączenia i sesji gracza.