Pomysły i funkcje gry

Twoja następna funkcja

Osiągnięcia

Klucz odblokowuje się raz na gracza. Tryb ręczny ufa grze; progi są sprawdzane w tej samej transakcji powiązanego raportu.

SDK: developWymagana sesja gracza
Unity
Ilustracja funkcji Osiągnięcia
Widoczny rezultat

Po akcji first_steps jest odblokowane dla tego samego gracza. Powtórzenie klucza nie daje kolejnego osiągnięcia ani nagrody.

Wideo pojawi się później

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

Osiągnięcia

Przygotuj ten sam projekt

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

    Osiągnięcia →
  2. Utwórz lub wykorzystaj te wpisy testowe w formularzu panelu. To wartości przykładowe, nie aktualne dane projektu.

    Klucz
    first_steps
    Nazwa
    First steps
    Reguła odblokowania
    manual
    Aktywne
    true
    Ukryte do odblokowania
    false
    Brak nagrody
    []

    Klucz odblokowuje się raz na gracza. Tryb ręczny ufa grze; progi są sprawdzane w tej samej transakcji powiązanego raportu.

  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/AchievementsDemo.cs
Wywołanie horizOn
1using System.Linq;
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// Nagrody są przyznawane natychmiast po odblokowaniu. Jeśli przyznanie się
9// nie powiedzie, cała operacja jest wycofywana.
10// This explicit action unlocks the shown configured achievement key.
11public sealed class AchievementsDemo : MonoBehaviour
12{
13 public async void RunReviewedAction()
14 {
15 var sessionUser = UserManager.Instance.CurrentUser;
16 if (sessionUser == null || !sessionUser.IsValid()) return;
17 var userId = UserManager.Instance.CurrentUser.UserId;
18 var manager = AchievementsManager.Instance;
19 var loaded = await manager.GetAchievements(userId);
20 if (!loaded.IsSuccess) { Debug.LogWarning(loaded.ErrorCode); return; }
21 foreach (var progress in loaded.Data.progress)
22 Debug.Log(progress.key + ": " + progress.rewardState);
23​
24 // Configure a manual first_steps definition, then call this on the matching game action.
25 var unlocked = await manager.Unlock(userId, "first_steps");
26 if (!unlocked.IsSuccess) { Debug.LogWarning(unlocked.ErrorCode); return; }
27 // Repeat the same key after timeout; never create a replacement reward identity.
28 // rewardState is complete, unlockedAt is null, and deliveryResults is empty.
29 // Values were credited atomically. Read PlayerValues again when showing the balance.
30 // No Inbox claim or local value addition. Refresh achievements after statistics updates.
31 }
32}
Otwórz pełny przykład SDK ↗

Przetestuj nową funkcję.

Po akcji first_steps jest odblokowane dla tego samego gracza. Powtórzenie klucza nie daje kolejnego osiągnięcia ani nagrody.

Wybierz w panelu ten sam projekt co w konfiguracji gry.

Punkty końcowe
  • GET/achievements
  • POST/achievements/unlock
  • POST/achievements/rewards/deliver
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.