Pomysły i funkcje gry

Twoja następna funkcja

Grupy

Gildie, klany i zespoły z rolami w wybranym projekcie.

SDK: developWymagana sesja gracza
Unity
Ilustracja funkcji Grupy
Widoczny rezultat

Po timeout lub konflikcie zachowaj oryginalną akcję i odczytaj stan. Nigdy nie ponawiaj automatycznie z nową rewizją.

Wideo pojawi się później

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

Grupy

Przygotuj ten sam projekt

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

    Grupy →
  2. Pierwsze żądanie nie wymaga dodatkowej definicji. Pusty wynik jest poprawny, dopóki nie powstaną odpowiednie dane gry.

    Grupy są tworzone i zarządzane w grze.

    Ten pierwszy przykład odczytuje dane. Nie tworzy grupy, meczu ani obiektu. Pusta lista jest poprawną pierwszą odpowiedzią.

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 ReadMyGroups() jawnym przyciskiem lub akcją sceny. Samo otwarcie pliku nie wysyła żądania.

C#
Assets/Scripts/GroupsDemo.cs
Wywołanie horizOn
1using UnityEngine;
2using PM.horizOn.Cloud.Manager;
3​
4public sealed class GroupsDemo : MonoBehaviour
5{
6 // Initialize/connect once and restore the existing player in the Quickstart first.
7 // Invoke from a player action; no background refresh or membership mutation.
8 public async void ReadMyGroups()
9 {
10 var user = UserManager.Instance.CurrentUser;
11 if (user == null || !user.IsValid()) return;
12 var result = await GroupsManager.Instance.GetGroups(user.UserId);
13 if (!result.IsSuccess) { Debug.LogWarning(result.ErrorCode); return; }
14 Debug.Log($"Player revision: {result.Data.revision}");
15 foreach (var group in result.Data.groups)
16 Debug.Log($"Group {group.id}: {group.myRole}, revision {group.revision}");
17 // result.Data.limits contains all current limits; existing groups may exceed them.
18 // GetMembers(userId, groupId, afterUserId: null, limit: 1) reads one page.
19 // Keep its revision and nextAfterUserId. A changed revision requires a restart.
20 // Pending createdAt may be absent/null; it does not mean the Unix epoch.
21 }
22}
23// For writes use the SDK GroupsExample and its durable GroupsSampleStore.
24// Preserve the exact project/player, body, expected revision and pending requestId.
25// Unknown create: read/reconcile explicitly; never create with a replacement revision.
Otwórz pełny przykład SDK ↗

Przetestuj nową funkcję.

Po timeout lub konflikcie zachowaj oryginalną akcję i odczytaj stan. Nigdy nie ponawiaj automatycznie z nową rewizją.

Wybierz w panelu ten sam projekt co w konfiguracji gry.

Punkty końcowe
  • GET/groups
  • GET/groups/{groupId}
  • GET/groups/{groupId}/members
  • GET/groups/{groupId}/pending
  • POST/groups
  • PUT/groups/{groupId}
  • POST/groups/{groupId}/join
  • POST/groups/{groupId}/request
  • POST/groups/{groupId}/invite
  • POST/groups/{groupId}/accept-invite
  • POST/groups/{groupId}/decline-invite
  • POST/groups/{groupId}/cancel-invite
  • POST/groups/{groupId}/accept-request
  • POST/groups/{groupId}/decline-request
  • POST/groups/{groupId}/cancel-request
  • POST/groups/{groupId}/leave
  • POST/groups/{groupId}/remove
  • POST/groups/{groupId}/role
  • POST/groups/{groupId}/transfer
  • POST/groups/{groupId}/delete
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.