Pomysły i funkcje gry

Twoja następna funkcja

Znajomi

Znajomi, zaproszenia i blokady wybranego projektu.

SDK: developWymagana sesja gracza
Unity
Ilustracja funkcji Znajomi
Widoczny rezultat

Po przekroczeniu czasu lub konflikcie odśwież i sprawdź zamiar. 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.

Znajomi

Przygotuj ten sam projekt

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

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

    Użyj dwóch osobnych sesji graczy w tym samym projekcie. Skopiuj dokładny UUID drugiego gracza z zarządzania użytkownikami.

    Użyj dokładnego UUID lub kanonicznego kodu H. Nazwy i e-maile nie są akceptowane.

    Tylko podgląd; relacje zmienia wyłącznie sesja danego gracza.

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/FriendsDemo.cs
Wywołanie horizOn
1using UnityEngine;
2using PM.horizOn.Cloud.Core;
3using PM.horizOn.Cloud.Manager;
4​
5// Existing SDK/project configuration and authenticated player session required.
6// Call RunReviewedAction explicitly after reviewing this example and its data.
7// Po przekroczeniu czasu lub konflikcie odśwież i sprawdź zamiar. Nigdy nie
8// ponawiaj automatycznie z nową rewizją.
9public sealed class FriendsDemo : MonoBehaviour
10{
11 public async void RunReviewedAction()
12 {
13 var sessionUser = UserManager.Instance.CurrentUser;
14 if (sessionUser == null || !sessionUser.IsValid()) return;
15 var userId = UserManager.Instance.CurrentUser.UserId;
16 var manager = FriendsManager.Instance;
17 var loaded = await manager.GetFriends(userId);
18 if (!loaded.IsSuccess) { Debug.LogWarning(loaded.ErrorCode); return; }
19 Debug.Log(loaded.Data.friendCode); // Public identifier, not a credential.
20 foreach (var friend in loaded.Data.friends)
21 Debug.Log(friend.display.name + ": " + (friend.lastActiveAt ?? "unknown"));
22​
23 // Invoke only after the player explicitly reviews this snapshot and chooses an action.
24 async System.Threading.Tasks.Task ApplyReviewed(string action, string targetUserId,
25 long expectedRevision, string requestId = null)
26 {
27 var result = action switch {
28 "request" => await manager.SendRequest(userId, targetUserId, expectedRevision),
29 "accept" => await manager.AcceptRequest(userId, targetUserId, expectedRevision, requestId),
30 "decline" => await manager.DeclineRequest(userId, targetUserId, expectedRevision, requestId),
31 "cancel" => await manager.CancelRequest(userId, targetUserId, expectedRevision, requestId),
32 "remove" => await manager.RemoveFriend(userId, targetUserId, expectedRevision),
33 "block" => await manager.BlockPlayer(userId, targetUserId, expectedRevision),
34 "unblock" => await manager.UnblockPlayer(userId, targetUserId, expectedRevision),
35 _ => throw new System.ArgumentException("Unknown action")
36 };
37 if (!result.IsSuccess) {
38 Debug.LogWarning(result.ErrorCode); // Timeout/409: reload and reconcile; do not repeat automatically.
39 return;
40 }
41 Debug.Log(result.Data.revision); // Replace the whole displayed snapshot.
42 }
43 // Accept/decline: original incoming requestId. Cancel: original outgoing requestId.
44 // Never replace expectedRevision on an uncertain retry. A new request is a new identity.
45 // FindPlayer(userId, exactUuidOrHCode) never searches names or emails.
46 // Last login is nullable, never an online flag. No hidden polling timer.
47 }
48}
Otwórz pełny przykład SDK ↗

Przetestuj nową funkcję.

Po przekroczeniu czasu lub konflikcie odśwież i sprawdź zamiar. Nigdy nie ponawiaj automatycznie z nową rewizją.

Wybierz w panelu ten sam projekt co w konfiguracji gry.

Punkty końcowe
  • GET/friends
  • GET/friends/find
  • POST/friends/request
  • POST/friends/accept
  • POST/friends/decline
  • POST/friends/cancel
  • POST/friends/remove
  • POST/friends/block
  • POST/friends/unblock
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.