Personalizza la finestra di chat

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Il sistema di chat di testo in-experience , alimentato da , consente ai giocatori di comunicare e socializzare facilmente tra loro nelle esperienze dal vivo.Oltre a supportare la chat di testo predefinita, puoi personalizzare l'interfaccia utente front-end.

Configurazione della finestra di chat

La finestra di chat generale consiste in:

  • Finestra di chat
  • Barra di input
  • Tabella dei canali (opzionale)
Core components of the text chat window.

Le schede del canale sono disabilitate per impostazione predefinita e ogni componente può essere attivata e disattivata in Studio o tramite scripting:

Nella finestra Explorer, espandi il ramo TextChatService e seleziona ChatWindowConfiguration , ChatInputBarConfiguration o ChannelTabsConfiguration .Quindi attiva o disattiva il componente nella finestra Proprietà.

Quando ChannelTabsConfiguration è abilitato, ogni predefinito TextChannel appare in una scheda come descritto nella seguente tabella.Inoltre, ogni personalizzazione TextChannel crea una scheda corrispondente alla Proprietàdel canale Name.

canalepredefinitoNome della scheda
RBXGenerale Generale
RBXSistema Generale (combinato in una singola scheda con RBXGeneral )
Squadra RBX Squadra
RBXWhisper Nome utente dell'altro Giocatore

Aspetto della aspetto

L'aspetto della finestra di chat generale è personalizzabile attraverso ChatWindowConfiguration .

ChatWindowConfiguration instance in Explorer hierarchy.
ProprietàDescrizioneBasilare
BackgroundColor3Color3 colore di sfondo della finestra di chat.[25, 27, 29]
BackgroundTransparencyTrasparenza dello sfondo della finestra di chat.0.3
FontFaceFont del testo della finestra di chat.BuilderSansMedium
TextColor3Color3 del testo della finestra di chat.[255, 255, 255]
TextSizeDimensione del testo della finestra di chat.14
TextStrokeColor3Color3 dello stroke per il testo della finestra di chat.[0, 0, 0]
TextStrokeTransparencyTrasparenza dello stroke per il testo della finestra di chat.0.5
HorizontalAlignmentAllineamento orizzontale della finestra di chat.Left
VerticalAlignmentAllineamento verticale della finestra di chat.Top
HeightScaleDimensione dell'altezza della finestra di chat rispetto alla dimensione dello schermo.1
WidthScaleScala della larghezza della finestra di chat rispetto alla dimensione dello schermo.1

aspettodella barra di input

L'aspetto della barra di input della chat è personalizzabile attraverso ChatInputBarConfiguration .

ChatInputBarConfiguration instance in Explorer hierarchy.
ProprietàDescrizioneBasilare
BackgroundColor3Color3 colore di sfondo della barra di input della chat.[25, 27, 29]
BackgroundTransparencyTrasparenza dello sfondo della barra di input della chat.0.2
FontFaceFont del testo di input della chat.BuilderSansMedium
PlaceholderColor3Color3 del testo di input della chat di riempimento.[178, 178, 178]
TextColor3Color3 del testo di input della chat inserito dal giocatore.[255, 255, 255]
TextSizeDimensione del testo di input della chat.14
TextStrokeColor3Color3 colore del tratto del testo di input della chat.[0, 0, 0]
TextStrokeTransparencyTrasparenza dello stroke per il testo di input della chat.0.5
AutocompleteEnabledSe il sistema di chat di testo mostra opzioni di autocompletamento per emoji e comandi.Gli emoji sono completati automaticamente digitando : seguito da caratteri non spazianti, mentre i comandi sono completati automaticamente digitando / .true
KeyboardKeyCodeI giocatori chiave aggiuntivi possono premere per attivare la messa a fuoco sull'area di input di chat predefinita.Slash

aspettodelle schede del canale

L'aspetto delle schede del canale è personalizzabile attraverso ChannelTabsConfiguration.

ChannelTabsConfiguration instance in Explorer hierarchy.
ProprietàDescrizioneBasilare
BackgroundColor3Color3 colore di sfondo delle schede del canale.[25, 27, 29]
BackgroundTransparencyTrasparenza dello sfondo delle schede del canale.0
HoverBackgroundColor3Color3 colore di sfondo delle schede quando si passa su di esse.[125, 125, 125]
FontFaceFont per il testo nelle schede del canale.BuilderSansBold
TextColor3Color3 del testo in una scheda non selezionata.[175, 175, 175]
SelectedTabTextColor3Color3 del testo in una scheda selezionata.[255, 255, 255]
TextSizeDimensione del testo nelle schede del canale.18
TextStrokeColor3Color3 colore del tratto del testo nelle schede del canale.[0, 0, 0]
TextStrokeTransparencyTrasparenza del tratto per il testo nelle schede del canale.1

Personalizza messaggi

Puoi personalizzare l'aspetto dei messaggi di chat e dei prefissi utilizzando ChatWindowMessageProperties e TextChatService.OnChatWindowAdded richiami senza sovrascrivere l'interfaccia utente esistente.Le opzioni di personalizzazione ti consentono di modificare l'aspetto dei messaggi di chat per abbinare il tema della tua esperienza e puoi anche ordinare o evidenziare i messaggi di diversi gruppi utente in base al colore dei prefissi o aggiungendo tag di chat.

Nomi utente colorati

Quando un utente invia un Messaggiodi chat, il suo DisplayName viene visualizzato come la parte del prefisso del Messaggio.Per impostazione predefinita, il nome di ogni utente è colorato secondo il loro Player.TeamColor ma puoi cambiare i colori dei nomi di chat usando ChatWindowMessageProperties e OnChatWindowAdded .Il seguente LocalScript in StarterPlayerScripts assegna un colore predeterminato a ciascun utente, scegliendo casualmente da una tabella di colori RGB.

Colored user name in the chat window.
LocalScript - Nome utente casuale dei colori

local TextChatService = game:GetService("TextChatService")
local chatWindowConfiguration = TextChatService.ChatWindowConfiguration
local nameColors = {
Color3.fromRGB(255, 0, 0),
Color3.fromRGB(0, 255, 0),
Color3.fromRGB(0, 0, 255),
Color3.fromRGB(255, 255, 0),
}
TextChatService.OnChatWindowAdded = function(message: TextChatMessage)
local properties = chatWindowConfiguration:DeriveNewMessageProperties()
local textSource = message.TextSource
if textSource then
local index: number = (textSource.UserId % #nameColors) + 1
local randomColor: Color3 = nameColors[index]
properties.PrefixTextProperties = chatWindowConfiguration:DeriveNewMessageProperties()
properties.PrefixTextProperties.TextColor3 = randomColor
end
return properties
end

Puoi anche applicare gradienti di colore e trasparenza ai prefissi del messaggio di colore utilizzando UIGradient .

Gradient user name in the chat window.
Colori del nome utente gradiente

local TextChatService = game:GetService("TextChatService")
local chatWindowConfiguration = TextChatService.ChatWindowConfiguration
local gradient = Instance.new("UIGradient")
gradient.Color = ColorSequence.new{
ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 0, 0)),
ColorSequenceKeypoint.new(0.5, Color3.fromRGB(255, 255, 0)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 0, 255))
}
TextChatService.OnChatWindowAdded = function(message: TextChatMessage)
local properties = chatWindowConfiguration:DeriveNewMessageProperties()
local textSource = message.TextSource
if textSource then
properties.PrefixTextProperties = chatWindowConfiguration:DeriveNewMessageProperties()
gradient:Clone().Parent = properties.PrefixTextProperties
end
return properties
end

Personalizzazione del testo ricco

I tag di colore del testo ricco possono essere utilizzati per formattare i messaggi di chat, utili se vuoi applicare il formattaggio a parti molto specifiche del Messaggio.Nota che il testo ricco non supporta i gradienti, ma il seguente esempio di codice mostra come puoi spostare il nome dell'utente (archiviato in TextChatMessage.PrefixText ) nel corpo del messaggio e quindi applicare il tagging del testo ricco solo alla parte del nome.

Rich text customization of user name in the chat window.
Personalizzazione del testo ricco

local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
local chatWindowConfiguration = TextChatService.ChatWindowConfiguration
local gradient = Instance.new("UIGradient")
gradient.Color = ColorSequence.new{
ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 0, 0)),
ColorSequenceKeypoint.new(0.5, Color3.fromRGB(255, 255, 0)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 0, 255))
}
TextChatService.OnChatWindowAdded = function(message: TextChatMessage)
local properties = chatWindowConfiguration:DeriveNewMessageProperties()
if message.TextSource then
properties.PrefixText = "[VIP]"
properties.Text = string.format("<font color='#00ffff'>%s</font>", message.PrefixText) .. " " .. message.Text
properties.PrefixTextProperties = chatWindowConfiguration:DeriveNewMessageProperties()
gradient:Clone().Parent = properties.PrefixTextProperties
end
return properties
end

Invia messaggi da fonti non giocatori

A volte, potresti voler mostrare il dialogo non giocatore nella finestra di chat, come "discorso" da un sistema di indirizzi pubblici o un personaggio non giocatore.

Sistema

Per inviare un messaggio di sistema al Giocatorelocale, chiama DisplaySystemMessage() dal canale predefinito RBXGeneral con un prefisso prima del nome di visualizzazione del Giocatore.

Script del client

local Players = game:GetService("Players")
local TextChatService = game:GetService("TextChatService")
local player = Players.LocalPlayer
local generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral
local PREFIX = "[Guide] Welcome "
-- Invia "Messaggiodi sistema" al giocatore con il suo nome visualizzato appuntato
generalChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)
Image showing a basic system message in the chat window.

Per una guida più dettagliata su come personalizzare l'aspetto dei messaggi di sistema, vedi Personalizzazione dei messaggi di sistema.

Messaggi di sistema predefiniti

Quando TextChatService.CreateDefaultTextChannels è true, uno dei canali di testo predefiniti è il canale RBXSystem.Gli script di chat predefiniti visualizzano automaticamente i messaggi di sistema in questo canale.Puoi personalizzare l'aspetto di questi messaggi utilizzando il RichiamaTextChannel.OnIncomingMessage.

Potresti voler personalizzare o modificare i messaggi di sistema che vengono emessi automaticamente dal sistema di chat.Poiché i messaggi del sistema predefiniti sono localizzati per gli utenti, dovresti far riferimento a essi con TextChatMessage.Metadata nei tuoi richiami di chat di testo se desideri personalizzare il loro aspetto.

Di seguito è un riferimento ai messaggi di sistema predefiniti che vengono emessi dal sistema di chat:

MetadatiDescrizione
Roblox.ChatTranslation.ChatWindow.SystemMessageIndica che il sistema può tradurre i messaggi di chat per il Player
Roblox.Notification.Friend.JoinedMostrato quando uno degli amici del giocatore si unisce all'esperienza
Roblox.MessageStatus.Avviso.FloodcheckedMostrato quando il messaggio di chat inviato dal giocatore è stato limitato dal server
Roblox.MessageStatus.Avviso.TextFilterFailedVisualizzato quando il messaggio di chat inviato dal giocatore non è stato in grado di essere visualizzato a causa di un problema del filtro del testo
Roblox.MessageStatus.Avviso.InvalidPrivacySettingsVisualizzato quando le impostazioni sulla privacy del Player impediscono loro di inviare un TextChatMessage
Roblox.MessageStatus.Avviso.MessageTroppo lungoVisualizzato quando il giocatore invia un messaggio di chat con contenuto troppo lungo
Roblox.MessageStatus.Avviso.IgnoratoMostra quando il sistema non riesce a inviare il messaggio di chat del giocatore per un motivo sconosciuto
Aiuto di Roblox.Help.InfoMostra la risposta dal RBXHelpCommand TextChatCommand
Roblox.Version.InformazioniMostra la risposta dal RBXVersionCommand TextChatCommand
Roblox.Team.Success.Ora in squadraVisualizzato quando il team del giocatore cambia
Roblox.Team.Error.Non è possibile chattare in team se non in teamMostrato quando il Player attiva il comando TextChatCommand RBXTeamCommand senza essere su un Team
Roblox.Whisper.Info.SuccessoMostrato quando il Player avvia con successo una conversazione Whisper
Roblox.Whisper.Welcome.InviaVisualizzato quando si entra in un Whisper TextChannel
Roblox.Whisper.Error.CannotWhisperToSelfUna risposta di errore dal comando TextChatCommand di RBXWhisperCommand
Roblox.Whisper.Error.Target non esisteUna risposta di errore dal comando TextChatCommand di RBXWhisperCommand
Roblox.Whisper.Error.TroppiPartiteUna risposta di errore dal comando TextChatCommand di RBXWhisperCommand
Roblox.Whisper.Error.SconosciutoUna risposta di errore dal comando TextChatCommand di RBXWhisperCommand
Roblox.Emote.Error.NonEsisteUna risposta di errore dal RBXEmoteCommand TextChatCommand
Roblox.Emote.Error.UserEmotesNon abilitatiUna risposta di errore dal RBXEmoteCommand TextChatCommand
Roblox.Emote.Error.Temporaneamente non disponibileUna risposta di errore dal RBXEmoteCommand TextChatCommand
Roblox.Emote.Error.Non supportatoUna risposta di errore dal RBXEmoteCommand TextChatCommand
Roblox.Emote.Error.SwitchToR15Una risposta di errore dal RBXEmoteCommand TextChatCommand
Roblox.Emote.Error.AnimazionePlayingUna risposta di errore dal RBXEmoteCommand TextChatCommand
Roblox.Mute.Error.PlayerNotFoundUna risposta di errore dal comando TextChatCommand di RBXMuteCommand
Roblox.Mute.Error.MultipleMatchesUna risposta di errore dal comando TextChatCommand di RBXMuteCommand
Roblox.Mute.Error.Non è possibile disattivarsiUna risposta di errore dal comando TextChatCommand di RBXMuteCommand
Roblox.Mute.Info.SuccessoUna risposta di successo dal comando TextChatCommand di RBXMuteCommand
Roblox.Unmute.Error.PlayerNotFoundUna risposta di errore dal RBXUnmuteCommand TextChatCommand
Roblox.Unmute.Error.MultipleMatchesUna risposta di errore dal RBXUnmuteCommand TextChatCommand
Roblox.Unmute.Error.Non è possibile disattivarsiUna risposta di errore dal RBXUnmuteCommand TextChatCommand
Roblox.Unmute.Info.SuccessoUna risposta di successo dal comando TextChatCommand di RBXUnmuteCommand

NPC/oggetto

Puoi anche stilizzare il dialogo non giocatore e aggiungere bolle di chat per far sembrare che i messaggi provengono da un NPC o oggetto all'interno del Mondo3D.

Script del client

local TextChatService = game:GetService("TextChatService")
local Workspace = game:GetService("Workspace")
local generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral
TextChatService.OnIncomingMessage = function(textChatMessage: TextChatMessage)
local properties = Instance.new("TextChatMessageProperties")
-- Controlla i messaggi di sistema che contengono metadati
if not textChatMessage.TextSource and textChatMessage.Metadata ~= "" then
-- Aggiungi prefisso per rendere il messaggio simile a quello inviato da un Giocatore
properties.PrefixText = string.format("<font color='#%s'>%s: </font>", "#50C999", textChatMessage.Metadata)
-- Aggiungi la chat a bolle
TextChatService:DisplayBubble(Workspace.Statue, textChatMessage.Text)
end
return properties
end
local message = "Welcome! I will be your guide."
local speakerName = "Ancient Knight"
generalChannel:DisplaySystemMessage(message, speakerName)
Image showing a knight statue NPC broadcasting a chat message to the chat window, along with a chat bubble above its head.