Ide dan fitur game

Fitur berikutnya

Teman

Teman, permintaan, dan blokir proyek terpilih.

SDK: developMemerlukan sesi pemain
Unity
Ilustrasi Teman
Hasil yang terlihat

Setelah waktu habis atau konflik, muat ulang dan tinjau niat. Jangan otomatis mencoba lagi dengan revisi baru.

Video akan tersedia

Langkah ini belum memiliki video. Panduan dan permintaan MCP sudah dapat digunakan.

Teman

Siapkan proyek yang sama

  1. Pilih proyek yang sama di dasbor dan konfigurasi game.

    Teman →
  2. Permintaan pertama tidak memerlukan definisi tambahan. Hasil kosong tetap sah sebelum ada data permainan yang sesuai.

    Gunakan dua sesi pemain terpisah dalam proyek yang sama. Salin UUID persis pemain lain dari pengelolaan pengguna.

    Gunakan UUID tepat atau kode H kanonis. Nama dan email tidak diterima.

    Hanya periksa di sini; hanya sesi pemain sendiri yang mengubah hubungan.

Tambahkan fitur ini

Kamu dapat membaca panduan. Untuk menjalankannya, diperlukan kunci proyek aktif. Siapkan proyek

SDK terpasang, konfigurasi proyek diimpor, dan pemain sudah masuk.

Contoh SDK ini menggunakan develop. Periksa apakah API yang diperlukan tersedia di SDK yang terpasang.

Selesaikan koneksi mulai cepat dengan pemain yang dipilih. Panggil RunReviewedAction() dari tombol atau tindakan adegan yang eksplisit. Membuka berkas saja tidak mengirim permintaan.

C#
Assets/Scripts/FriendsDemo.cs
Panggilan 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// Setelah waktu habis atau konflik, muat ulang dan tinjau niat. Jangan
8// otomatis mencoba lagi dengan revisi baru.
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}
Buka contoh SDK lengkap ↗

Uji fitur barumu.

Setelah waktu habis atau konflik, muat ulang dan tinjau niat. Jangan otomatis mencoba lagi dengan revisi baru.

Pilih proyek yang sama di dasbor dan konfigurasi game.

Titik akhir
  • 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
Semua titik akhir di referensi API
Saran kami untuk langkah berikutnya

Berikan skor tertinggi untuk setiap ronde.

Simpan skor setelah ronde dan tampilkan siapa yang unggul. Tetap gunakan koneksi dan sesi pemainmu.