Pomysły i funkcje gry

Twoja następna funkcja

Rozmowy

Zachowane wiadomości, jawne subskrypcje i ograniczona moderacja.

SDK: developWymagana sesja gracza
Unity
Ilustracja funkcji Rozmowy
Widoczny rezultat

Dwie istniejące sesje: otwórz kanał projektu, wyślij raz, odczytaj i zgłoś zachowaną wiadomość. Czat bezpośredni wymaga przyjaźni, grupowy aktywnego członkostwa.

Wideo pojawi się później

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

Rozmowy

Przygotuj ten sam projekt

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

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

    Dwie istniejące sesje: otwórz kanał projektu, wyślij raz, odczytaj i zgłoś zachowaną wiadomość. Czat bezpośredni wymaga przyjaźni, grupowy aktywnego członkostwa.

    PHP simpleServer zwraca 501 NOT_SUPPORTED dla wszystkich tras Chat.

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

C#
Assets/Scripts/ChatDemo.cs
Wywołanie horizOn
1using UnityEngine;
2using PM.horizOn.Cloud.Manager;
3​
4// Existing imported SDK and authenticated player session required.
5// Call these methods explicitly from a player action; nothing runs on startup.
6public sealed class ChatDemo : MonoBehaviour
7{
8 public async void ReadChannelSnapshot(string channelId)
9 {
10 var user = UserManager.Instance.CurrentUser;
11 if (user == null || !user.IsValid()) return;
12 var result = await ChatManager.Instance.SyncChannel(user.UserId, channelId);
13 if (!result.IsSuccess) { Debug.LogWarning(result.ErrorCode); return; }
14 Debug.Log("Snapshot epoch: " + result.Data.channel.epoch);
15 foreach (var message in result.Data.messages) Debug.Log(message.text);
16 // This is the small authorized server window, not the full device history.
17 // A raw snapshot does not authorize or populate a managed realtime feed.
18 // WatchChannel waits for confirmed subscription; revocation hides the feed.
19 }
20​
21 public void ReadDeviceHistory(string channelId, string before = null)
22 {
23 var user = UserManager.Instance.CurrentUser;
24 if (user == null || !user.IsValid()) return;
25 var page = ChatManager.Instance.ReadLocalHistory(channelId, before, 50);
26 if (!page.IsSuccess) { Debug.LogWarning(page.ErrorCode); return; }
27 foreach (var message in page.Data.messages) Debug.Log(message.text);
28 // Continue only on an explicit action using page.Data.nextCursor.
29 // Local delivered history can outlive the small current server window.
30 // For send/report, import the SDK ChatExample and preserve its original
31 // operationId, issuedAt, channel and text before one explicit send.
32 // An uncertain outcome never permits a fresh identity or implicit retry.
33 }
34}
Otwórz pełny przykład SDK ↗

Dwóch graczy, jeden kanał

Dwie istniejące sesje: otwórz kanał projektu, wyślij raz, odczytaj i zgłoś zachowaną wiadomość. Czat bezpośredni wymaga przyjaźni, grupowy aktywnego członkostwa.

Kanał zarządzany wymaga potwierdzenia subskrypcji: zdarzenie/resync, jeden Sync i flaga zmian. Bez odpytywania lub trybu offline; cofnięcie uprawnień ukrywa tekst.

Zapisz dokładny oryginał dla projektu/gracza przed wysłaniem. Host/sesja ograniczają żądania. Nigdy nie zastępuj niepewnego ID, czasu, tekstu lub rewizji.

404 operacji nie dowodzi niepowodzenia. Zachowaj oryginał po timeout lub OPERATION_EXPIRED; uzgadniaj tylko zgodnym potwierdzeniem.

Powtórz oryginalne ID i powód. removed potwierdza powtórkę; REPORT_EXPIRED nie tworzy nowego zgłoszenia.

PHP simpleServer zwraca 501 NOT_SUPPORTED dla wszystkich tras Chat.

Przetestuj nową funkcję.

Dwie istniejące sesje: otwórz kanał projektu, wyślij raz, odczytaj i zgłoś zachowaną wiadomość. Czat bezpośredni wymaga przyjaźni, grupowy aktywnego członkostwa.

Wybierz w panelu ten sam projekt co w konfiguracji gry.

Punkty końcowe
  • GET/chat/limits
  • POST/chat/channels/open
  • POST/chat/channels/{channelId}/sync
  • POST/chat/channels/{channelId}/messages
  • GET/chat/operations/{operationId}
  • POST/chat/channels/{channelId}/messages/{messageId}/report
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.