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)

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.
Canale predefinito | Nome della scheda |
---|---|
RBXGeneral | Generale |
RBXSystem | Generale (combinato in una singola scheda con RBXGeneral ) |
RBXTeam | Squadra |
RBXWhisper | Nome utente dell'altro giocatore |
Aspetto della finestra
L'aspetto della finestra di chat generale è personalizzabile attraverso ChatWindowConfiguration .

Proprietà | Descrizione | Basilare |
---|---|---|
BackgroundColor3 | Color3 colore di sfondo della finestra di chat. | [25, 27, 29] |
BackgroundTransparency | Trasparenza dello sfondo della finestra di chat. | 0.3 |
FontFace | Font del testo della finestra di chat. | BuilderSansMedium |
TextColor3 | Color3 del testo della finestra di chat. | [255, 255, 255] |
TextSize | Dimensione del testo della finestra di chat. | 14 |
TextStrokeColor3 | Color3 dello stroke per il testo della finestra di chat. | [0, 0, 0] |
TextStrokeTransparency | Trasparenza dello stroke per il testo della finestra di chat. | 0.5 |
HorizontalAlignment | Allineamento orizzontale della finestra di chat. | Left |
VerticalAlignment | Allineamento verticale della finestra di chat. | Top |
HeightScale | Dimensione dell'altezza della finestra di chat rispetto alla dimensione dello schermo. | 1 |
WidthScale | Scala della larghezza della finestra di chat rispetto alla dimensione dello schermo. | 1 |
Aspetto della barra di input
L'aspetto della barra di input della chat è personalizzabile attraverso ChatInputBarConfiguration .

Proprietà | Descrizione | Basilare |
---|---|---|
BackgroundColor3 | Color3 colore di sfondo della barra di input della chat. | [25, 27, 29] |
BackgroundTransparency | Trasparenza dello sfondo della barra di input della chat. | 0.2 |
FontFace | Font del testo di input della chat. | BuilderSansMedium |
PlaceholderColor3 | Color3 del testo di input della chat di riempimento. | [178, 178, 178] |
TextColor3 | Color3 del testo di input della chat inserito dal giocatore. | [255, 255, 255] |
TextSize | Dimensione del testo di input della chat. | 14 |
TextStrokeColor3 | Color3 colore del tratto del testo di input della chat. | [0, 0, 0] |
TextStrokeTransparency | Trasparenza dello stroke per il testo di input della chat. | 0.5 |
AutocompleteEnabled | Se 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 |
KeyboardKeyCode | I giocatori chiave aggiuntivi possono premere per attivare la messa a fuoco sull'area di input di chat predefinita. | Slash |
Aspetto delle schede del canale
L'aspetto delle schede del canale è personalizzabile attraverso ChannelTabsConfiguration.

Proprietà | Descrizione | Basilare |
---|---|---|
BackgroundColor3 | Color3 colore di sfondo delle schede del canale. | [25, 27, 29] |
BackgroundTransparency | Trasparenza dello sfondo delle schede del canale. | 0 |
HoverBackgroundColor3 | Color3 colore di sfondo delle schede quando si passa su di esse. | [125, 125, 125] |
FontFace | Font per il testo nelle schede del canale. | BuilderSansBold |
TextColor3 | Color3 del testo in una scheda non selezionata. | [175, 175, 175] |
SelectedTabTextColor3 | Color3 del testo in una scheda selezionata. | [255, 255, 255] |
TextSize | Dimensione del testo nelle schede del canale. | 18 |
TextStrokeColor3 | Color3 colore del tratto del testo nelle schede del canale. | [0, 0, 0] |
TextStrokeTransparency | Trasparenza 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 messaggio di 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.

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 .

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.

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
Messaggi da fonti non giocatori
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 richiamo TextChannel.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.Ad esempio, puoi usare Metadata per identificare messaggi di sistema, messaggi di errore o messaggi da sistemi specifici nella tua esperienza.
Sistema
Per inviare un messaggio di sistema al giocatore locale, come "discorso" da un sistema di indirizzi pubblici, 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.LocalPlayerlocal generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGenerallocal PREFIX = "[Guide] Welcome "-- Invia "messaggio di sistema" al giocatore con il suo nome visualizzato appuntatogeneralChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)

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 mondo 3D.
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)
