TextChatService
*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.
Un servizio che gestisce la chat di testo in-experience, inclusa managing channels , decorare i messaggi, filtrare il testo, creating commands , e sviluppare interfacce di chat personalizzate .
Per saperne di più, vedi Panoramica di TextChatService.
Per ulteriori personalizzazioni, TextChatService ha i seguenti figli singoli:
Sommario
Proprietà
Determina se la traduzione della chat è abilitata.
Determina se abilitare completamente TextChatService o tornare al sistema di chat legacy.
Determina se TextChatService deve creare un valore predefinito TextChatCommands .
Determina se TextChatService deve creare un valore predefinito TextChannels .
Metodi
Mostra una bolla di chat sopra la parte o il personaggio del giocatore fornito.
Determina se un utente ha il permesso di chattare nelle esperienze.
Determina se due utenti riceveranno o meno messaggi l'uno dall'altro.
Determina se un utente ha il permesso di chattare direttamente con altri utenti nelle esperienze basate su fattori come le impostazioni di controllo parentale.
Eventi
Si accende quando viene chiamato TextChatService:DisplayBubble() .
Si attiva quando TextChannel:DisplaySystemMessage() viene invocato sul client, o quando il client riceve una risposta valida TextChannel:SendAsync() dal Server.
Si accende quando TextChannel:SendAsync() viene chiamato dal client di invio.
Richiami
Chiamato quando una chat a bolle è about to essere visualizzata.
Chiamato quando un nuovo messaggio è about to essere displayed nella finestra di chat. Questo può essere implementato solo sul client.
Chiamato quando TextChatService sta ricevendo un Messaggioin arrivo.
Proprietà
ChatTranslationEnabled
Determina se la traduzione della chat è abilitata.Se vero, un messaggio di sistema avviserà il Giocatorequando si unirà per la prima volta che i messaggi di chat potrebbero essere tradotti nella lingua preferita del Giocatore.
ChatVersion
Determina se abilitare completamente TextChatService o tornare al sistema di chat legacy.Impostare questa proprietà a Enum.ChatVersion.LegacyChatService disabilita effettivamente TextChatService .
CreateDefaultCommands
Determina se TextChatService deve creare un valore predefinito TextChatCommands .
Se vero, i seguenti TextChatCommands vengono creati e inseriti in un Folder chiamato TextChatCommands all'interno di TextChatService :
<th>Alias primario</th><th>Alias secondario</th><th>Descrizione</th><th>Esempio di utilizzo</th></tr></thead><tbody><tr><td><b>Comando RBXClear</b></td><td>eliminare/pulire</td><td>cls</td><td>Cancella il log della chat per l'utente locale.</td><td><code>/cls</code></td></tr><tr><td><b>Comando della Console RBX</b></td><td>console</td><td /><td>Apre la Console dello Sviluppatore.</td><td><code>/console</code></td></tr><tr><td><b>RBXEmoteCommand</b></td><td>emote</td><td>e</td><td>Riproduce un'Emotedell'avatar.</td><td><code>/e danza</code></td></tr><tr><td><b>Comando RBXHelp</b></td><td>aiuto</td><td>?</td><td>Mostra una lista di comandi di chat.</td><td><code>/aiuto</code></td></tr><tr><td><b>Comando RBXMuteCommand</b></td><td>muto</td><td>m</td><td>Silenzia un utente dal suo <code>Class.Player.Name|Name</code> o <code>Class.Player.DisplayName|DisplayName</code> in tutti i <code>Class.TextChannel|TextChannels</code>.</td><td><code>/m Nome utente</code></td></tr><tr><td><b>Comando Team RBX</b></td><td>team</td><td>t</td><td>Entra nella modalità chat di squadra in cui i messaggi sono visibili solo ai compagni di squadra.</td><td><code>/t</code></td></tr><tr><td><b>RBXUnmuteCommand</b></td><td>disattiva</td><td>um</td><td>Disattiva un utente dal suo <code>Class.Player.Name|Name</code> o <code>Class.Player.DisplayName|DisplayName</code> in tutti i <code>Class.TextChannel|TextChannels</code>.</td><td><code>/um Nome utente</code></td></tr><tr><td><b>Comando RBXVersion</b></td><td>versione</td><td>v</td><td>Mostra la versione della chat.</td><td><code>/versione</code></td></tr><tr><td><b>Comando RBXWhisper</b></td><td>sussurro</td><td>w</td><td>Entra in modalità sussurro con un altro <code>Class.Player</code>.</td><td><code>/w Nome visualizzazione</code> o <code>/w @Username</code></td></tr></tbody>
Nome |
---|
Nota che puoi Modificare, creare e rimuovere TextChatCommands anche se CreateDefaultCommands è vero. Nota anche che i comandi muti e disattivati si applicano a tutti TextChannels .
CreateDefaultTextChannels
Determina se TextChatService deve creare un valore predefinito TextChannels .Se è vero, un Folder chiamato TextChannels viene creato all'interno di TextChatService a runtime per contenere il TextChannels descritto nella tabella seguente.Ognuno dei canali predefiniti ha il comportamento speciale descritto applicato ai messaggi utilizzando la funzione di richiamo interamente legata TextChannel.OnIncomingMessage , che cambia il modo in cui i messaggi appaiono quando vengono inviati attraverso il canale.Il richiamo viene assegnato automaticamente sia durante l'esecuzione (se esiste il TextChannel ) sia quando viene creato il TextChannel .
<th>Descrizione</th></tr></thead><tbody><tr><td><b>RBXGenerale</b></td><td><code>Class.TextChannel</code> per messaggi del giocatore.Nella finestra di chat, i messaggi vengono modificati in modo che <code>Class.TextChatMessage.PrefixText|PrefixText</code> riceva un tag di colore del testo <a href="/ui/rich-text">ricco</a> per dare ai giocatori di chat il colore del nome distintivo.Se esiste <code>Class.Player.Team</code>, viene utilizzato <code>Class.Team.TeamColor</code> invece del colore del nome predefinito.</td></tr><tr><td><b>RBXSistema</b></td><td><code>Class.TextChannel</code> per messaggi di sistema.Nella finestra di chat, i messaggi vengono modificati in modo che <code>Class.TextChatMessage.Text</code> riceva un tag di colore grigio chiaro per impostazione predefinita, o un tag di colore rosso se <code>Class.TextChatMessage.Metadata</code> contiene la parola <code>"Errore"</code> .</td></tr><tr><td><b>Squadra RBX[BrickColor]</b></td><td><code>Class.TextChannel</code> per messaggi specifici per il team, creati quando un <code>Class.Team.TeamColor|TeamColor</code> è in uso da qualsiasi <code>Class.Team</code> all'interno del servizio <code>Class.Teams</code>.Il nome del canale creato è <b>RBXTeam</b> seguito dal nome <code>Class.Team.TeamColor|TeamColor</code>.Ad esempio, <b>RBXTeamCrimson</b> è un <code>Class.TextChannel</code> creato quando c'è un team attivo il cui <code>Class.Team.TeamColor|TeamColor</code> proprietà è il "Crimson" <code>Datatype.BrickColor</code> .Nella finestra di chat, i messaggi vengono modificati in modo che <code>Class.TextChatMessage.PrefixText|PrefixText</code> sia colorato secondo il <code>Class.Player.TeamColor|TeamColor</code> e sia preceduto da <b>[Team]</b> .I canali di team creano <code>Class.TextSource|Textources</code> per tutti i non‑ <code>Class.Player.Neutral|Neutral</code> giocatori con la corrispondente <code>Class.Team.TeamColor|TeamColor</code> , consentendo loro di utilizzare il chat di team solo.I canali vengono rimossi se non ci sono squadre rimanenti con una classe <code>Class.Team.TeamColor|TeamColor</code> associata.</td></tr><tr><td><b>RBXWhisper:[Utente1]_[Utente2]</b></td><td><code>Class.TextChannel</code> per messaggi sussurrati tra due giocatori, creato quando un giocatore utilizza il comando <code>/whisper</code> su un altro Giocatore.Ad esempio <b>RBXWhisper:2276836_505306092</b> è un <code>Class.TextChannel</code> per i giocatori con <code>Class.Player.UserId|UserIds</code><b>2276836</b> e <b>505306092</b>.All'interno dei canali Whisper ci sono due <code>Class.TextSource|TextSources</code> associati rispettivamente ai rispettivi <code>Class.Player.UserId|UserIds</code> .Nella finestra di chat, i messaggi sono colorati allo stesso modo di quelli in <b>RBXGeneral</b> e <code>Class.TextChatMessage.PrefixText</code> viene modificato per mostrare se un messaggio è stato inviato o ricevuto dall'utente locale.I canali Whisper vengono rimossi quando uno dei giocatori lascia l'esperienza.</td></tr></tbody>
Canale |
---|
Nota che i richiami predefiniti TextChannel.OnIncomingMessage possono essere sovrascritti.Si noti inoltre che puoi Modificare, creare e rimuovere TextChannels anche se CreateDefaultTextChannels è vero.
I messaggi di diversi canali di testo possono essere separati in diverse schede nella finestra di chat usando ChannelTabsConfiguration .
Metodi
DisplayBubble
Mostra una bolla di chat sopra la parte o il personaggio del giocatore fornito e lancia l'evento BubbleDisplayed con i parametri specificati in questo metodo.Può visualizzare bolle per personaggi non giocatori (NPC) se specifici una parte all'interno del personaggio, come la sua testa.
Nota che questo metodo è disponibile solo per l'uso in LocalScript , o in un Script con RunContext di Enum.RunContext.Client .
Parametri
La parte o il personaggio che la bolla deve essere visualizzata sopra.
Il testo da mostrare nella bolla di chat.
Restituzioni
CanUserChatAsync
Determina se un utente ha il permesso di chattare nelle esperienze.Fattori come le impostazioni di controllo parentale possono impedire all'utente di inviare messaggi.Errori se l'ID non è nel Serverattuale.Nota che questo metodo può essere utilizzato con tutti i giocatori attuali UserIds in un Script con RunContext di Enum.RunContext.Server o Enum.RunContext.Legacy .Questo metodo può essere utilizzato anche in un LocalScript ma solo con il UserId del Giocatorelocale.
Parametri
Restituzioni
CanUsersChatAsync
Determina se due utenti riceveranno o meno messaggi l'uno dall'altro.Fattori come le impostazioni di controllo parentale incompatibili o lo stato bloccato possono impedire la consegna di messaggi tra gli utenti TextChannels internamente utilizza questo risultato per determinare se consegnare messaggi tra gli utenti.Nota che questo metodo è disponibile solo per l'uso in un Script con RunContext di Enum.RunContext.Server o Enum.RunContext.Legacy .
Parametri
Restituzioni
CanUsersDirectChatAsync
Determina se un utente ha il permesso di chattare direttamente con altri utenti nelle esperienze in base alle impostazioni di controllo parentale. Da utilizzare quando:
- La linea di comunicazione è inizializzata dall'utente (non inizializzata da sviluppatore o gameplay)
- L'accesso alla comunicazione è chiuso e limitato
Un esempio di chat diretta è un canale sussurrato tra due utenti.
Puoi utilizzare questo metodo per gateare alcune funzionalità nella tua esperienza a seconda del Risultato.
Quando crei un TextChannel per una chat diretta, usa TextChannel:SetDirectChatRequester() per impostare il requesterUserId in modo che il canale possa determinare se consegnare messaggi tra gli utenti.Quando TextChannel.DirectChatRequester è non null, TextChannels utilizza internamente questo risultato per determinare se consegnare messaggi tra gli utenti.
local whoCanDirectChat = TextChatService:CanUsersDirectChatAsync(requesterUserId, { userId1, userId2 })if #whoCanDirectChat > 0 then-- Il requesterUUID può dirigere la chat con iPad1, iPad2 o entrambielse-- Il richiedente uuid non può dirigere la chat con iPad1 o iPad2end
Si noti che questo metodo è disponibile solo per l'uso in un Script con RunContext di Enum.RunContext.Server o Enum.RunContext.Legacy .
Parametri
L'utente che avrebbe iniziato la Richiestadi chat diretta. Se il requesterUserId non è nel Serverattuale, questo metodo darà errore.
Un elenco di utenti con cui il requesterUserId vorrebbe chattare direttamente. Gli utenti non nel server attuale vengono ignorati.
Restituzioni
Un elenco di utenti che potrebbero partecipare alla Richiestadi chat diretta.Se nessuno degli utenti può dirigere la chat con il requesterUserId, il risultato è un vettorevuoto.
Campioni di codice
This example checks if two users can chat, creates a new TextChannel, and adds them to it.
local TextChatService = game:GetService("TextChatService")
local directChatParticipants = TextChatService:CanUsersDirectChatAsync(userId1, { userId2 })
-- Check for eligible participants
if #directChatParticipants > 0 then
local directChannel = Instance.new("TextChannel")
directChannel.Parent = TextChatService
for _, participant in directChatParticipants do
directChannel:AddUserAsync(participant)
end
return directChannel
end
warn("Could not create TextChannel. Not enough eligible users.")
return nil
Eventi
MessageReceived
Come TextChannel.MessageReceived , si attiva quando TextChannel:DisplaySystemMessage() viene invocato sul client, o quando il client riceve una risposta valida TextChannel:SendAsync() dal Server.Questo evento viene attivato solo sul client.
Se la proprietà del ServerTextChannel.ShouldDeliverCallback è legata e restituisce false, il client non spara TextChatService.MessageReceived .
Usa il parametro TextChatMessage per ottenere il TextSource e il testo del messaggio (con TextChatMessage.Text ).
Il parametro TextChatMessage è il risultato finale di qualsiasi funzione legata a TextChatService.OnIncomingMessage o TextChannel.OnIncomingMessage.
Parametri
Il ricevuto TextChatMessage .
SendingMessage
Si accende quando TextChannel:SendAsync() viene chiamato dal client di invio.Usa questo per consentire di mostrare messaggi di riempimento all'utente mentre si attende la risposta del server a TextChannel:SendAsync() .
Parametri
Il TextChatMessage dalla chiamata TextChannel:SendAsync().
Richiami
OnBubbleAdded
Chiamato quando una chat a bolle è about to essere visualizzata. Questo può essere implementato solo sul client.
Usa questo per personalizzare i messaggi di chat a bolle individuali.Se questo callback restituisce un BubbleChatMessageProperties , quelle proprietà verranno applicate alla bolla associata, sostituendo le proprietà BubbleChatConfiguration.Se un UICorner , UIGradient , o ImageLabel è genitoriale sotto BubbleChatMessageProperties , sovrascriveranno anche le rispettive controparti definite in BubbleChatConfiguration .
Se il messaggio di chat viene inviato da un Giocatore, message.TextSource corrisponderà a quel Giocatoree adornee sarà nil .
Se il messaggio di chat viene inviato via TextChatService:DisplayBubble() , adornee sarà il partOrCharacter fornito e message.TextSource sarà nil .
Quando è legato al client che invia un Messaggio, questo callback viene eseguito due volte: prima quando il messaggio viene inizialmente inviato e ricevuto localmente, quindi di nuovo quando il client riceve il risultato del messaggio filtrato dal Server.
Parametri
L'incoming TextChatMessage .
La parte o il personaggio a cui è allegato il messaggio della chat a bolle.
Restituzioni
Se viene restituito un BubbleChatMessageProperties , le sue proprietà sostituiscono le proprietà BubbleChatConfiguration.
OnChatWindowAdded
Chiamato quando un nuovo messaggio è about to essere displayed nella finestra di chat. Questo può essere implementato solo sul client.
Usa questo per personalizzare i messaggi individuali che appaiono nella finestra di chat.Se questo callback restituisce un ChatWindowMessageProperties , quelle proprietà verranno applicate al Messaggioassociato, sostituendo le proprietà ChatWindowConfiguration.Se un UIGradient è parented sotto ChatWindowMessageProperties , verrà anche sostituita la proprietà TextColor3 definita in ChatWindowConfiguration .
Quando è legato al client che invia un Messaggio, questo callback viene eseguito due volte: prima quando il messaggio viene inizialmente inviato e ricevuto localmente, quindi di nuovo quando il client riceve il risultato del messaggio filtrato dal Server.
Parametri
L'incoming TextChatMessage .
Restituzioni
Se viene restituito un ChatWindowMessageProperties , le sue proprietà sostituiscono le proprietà ChatWindowConfiguration.
OnIncomingMessage
Chiamato quando TextChatService sta ricevendo un Messaggioin arrivo. Può essere implementato solo sul client.
Usa questo per decorare TextChatMessages .Se questo callback restituisce un TextChatMessageProperties , queste proprietà vengono unite al parametro TextChatMessage per creare una nuova TextChatMessage .
Quando è legato al client che invia un Messaggio, questo callback viene eseguito due volte; prima quando il messaggio viene inizialmente inviato e ricevuto localmente, e di nuovo quando il client riceve il risultato del messaggio filtrato dal Server.
Nota che questo TextChatService.OnIncomingMessage richiamo esegue prima di qualsiasi TextChannel.OnIncomingMessage richiamo.
Questo dovrebbe essere definito solo una volta nel codice sorgente. Numerose bindings sostituiranno l'un l'altra in modo non deterministico.
Parametri
L'incoming TextChatMessage .
Restituzioni
Se viene restituito un quelle proprietà vengono unite al parametro per creare un nuovo con quelle proprietà, altrimenti, se viene restituito non viene modificato.