Personalizza la finestra della chat

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

Il sistema di chat testuale in gioco, alimentato da TextChatService, consente ai giocatori di comunicare e socializzare facilmente tra loro nei giochi dal vivo. Oltre a supportare la chat testuale predefinita, è possibile personalizzare l'interfaccia utente front-end.

Configurazione della finestra della chat

La finestra della chat complessiva consiste in:

  • Finestra della chat
  • Barra di input
  • Schede canale (opzionale)
Componenti principali della finestra della chat.

Le schede canale sono disabilitate per impostazione predefinita e ciascun componente può essere attivato o disattivato in Studio o tramite script:

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

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

Canale predefinitoNome della scheda
RBXGeneralGenerale
RBXSystemGenerale (unito in un'unica scheda con RBXGeneral)
RBXTeamSquadra
RBXWhisperNome utente dell'altro giocatore

Aspetto della finestra

L'aspetto complessivo della finestra della chat è personalizzabile tramite ChatWindowConfiguration.

Istanza ChatWindowConfiguration nella gerarchia di Explorer.
ProprietàDescrizionePredefinito
BackgroundColor3Colore di sfondo Color3 della finestra della chat.[25, 27, 29]
BackgroundTransparencyTrasparenza dello sfondo della finestra della chat.0.3
EnabledSe mostrare la finestra della chat predefinita. Imposta su false per nascondere.true
FontFaceFont del testo della finestra della chat.BuilderSansMedium
TextColor3Color3 del testo della finestra della chat.[255, 255, 255]
TextSizeDimensione del testo della finestra della chat.14
TextStrokeColor3Color3 del contorno per il testo della finestra della chat.[0, 0, 0]
TextStrokeTransparencyTrasparenza del contorno per il testo della finestra della chat.0.5
HorizontalAlignmentAllineamento orizzontale della finestra della chat.Left
VerticalAlignmentAllineamento verticale della finestra della chat.Top
HeightScaleScala dell'altezza della finestra della chat rispetto alla dimensione dello schermo.1
WidthScaleScala della larghezza della finestra della chat rispetto alla dimensione dello schermo.1

Aspetto della barra di input

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

Istanza ChatInputBarConfiguration nella gerarchia di Explorer.
ProprietàDescrizionePredefinito
BackgroundColor3Colore di sfondo Color3 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 segnaposto.[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 contorno del testo di input della chat.[0, 0, 0]
TextStrokeTransparencyTrasparenza del contorno per il testo di input della chat.0.5
AutocompleteEnabledSe il sistema di chat testuale mostra opzioni di completamento automatico per emoji e comandi. Gli emoji vengono completati automaticamente digitando : seguito da caratteri non bianchi, mentre i comandi vengono completati automaticamente digitando /.true
KeyboardKeyCodeTasto aggiuntivo che i giocatori possono premere per attivare il focus sulla barra di input della chat predefinita.Slash

Aspetto delle schede canale

L'aspetto delle schede canale è personalizzabile tramite ChannelTabsConfiguration.

Istanza ChannelTabsConfiguration nella gerarchia di Explorer.
ProprietàDescrizionePredefinito
BackgroundColor3Colore di sfondo Color3 delle schede canale.[25, 27, 29]
BackgroundTransparencyTrasparenza dello sfondo delle schede canale.0
HoverBackgroundColor3Colore di sfondo delle schede quando si passa sopra di esse.[125, 125, 125]
FontFaceFont per il testo nelle schede 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 canale.18
TextStrokeColor3Color3 colore del contorno del testo nelle schede canale.[0, 0, 0]
TextStrokeTransparencyTrasparenza del contorno del testo nelle schede canale.1

Personalizza i messaggi

Puoi personalizzare l'aspetto dei corpi dei messaggi della chat e dei prefissi utilizzando ChatWindowMessageProperties e i callback TextChatService.OnChatWindowAdded senza sovrascrivere l'interfaccia utente esistente. Le opzioni di personalizzazione ti consentono di modificare l'aspetto dei messaggi della chat per adattarli al tema del tuo gioco e puoi anche ordinare o evidenziare i messaggi di diversi gruppi di utenti colorando i prefissi o aggiungendo tag di chat.

Colora i nomi utente

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

Nome utente colorato nella finestra della chat.
LocalScript - Colori Nome Utente Casuali

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 colori e gradienti di trasparenza per colorare i prefissi dei messaggi utilizzando UIGradient.

Nome utente con gradiente nella finestra della chat.
Colori Nome Utente con 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 font possono essere utilizzati per formattare i messaggi della chat, utile se desideri applicare la formattazione a parti molto specifiche del messaggio. Tieni presente che il testo ricco non supporta gradienti, ma il seguente esempio di codice mostra come puoi spostare il nome utente (memorizzato in TextChatMessage.PrefixText) nel corpo del messaggio e quindi applicare la registrazione del testo ricco solo alla parte del nome.

Personalizzazione del testo ricco del nome utente nella finestra della chat.
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 callback TextChannel.OnIncomingMessage.

Potresti voler personalizzare o alterare i messaggi di sistema che vengono emessi automaticamente dal sistema di chat. Poiché i messaggi di sistema predefiniti sono localizzati per gli utenti, dovresti riferirti a loro tramite TextChatMessage.Metadata nei tuoi callback di chat testuale se desideri personalizzarne l'aspetto. Ad esempio, potresti utilizzare Metadata per identificare i messaggi di sistema, i messaggi di errore o messaggi di sistemi specifici nel tuo gioco.

Sistema

Per inviare un messaggio di sistema al giocatore locale, come "annuncio" da un sistema di altoparlante pubblico, chiama DisplaySystemMessage() dal canale RBXGeneral predefinito con un prefisso prima del nome visualizzato del giocatore.

Client Script

local Players = game:GetService("Players")
local TextChatService = game:GetService("TextChatService")
local player = Players.LocalPlayer
local generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral
local PREFIX = "[Guida] Benvenuto "
-- Invia "messaggio di sistema" al giocatore con il suo nome visualizzato aggiunto
generalChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)
Immagine che mostra un messaggio di sistema di base nella finestra della chat.

NPC/oggetto

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

Client Script

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 far sembrare che il messaggio sia stato inviato da un giocatore
properties.PrefixText = string.format("<font color='#%s'>%s: </font>", "#50C999", textChatMessage.Metadata)
-- Aggiungi bolla di chat
TextChatService:DisplayBubble(Workspace.Statue, textChatMessage.Text)
end
return properties
end
local message = "Benvenuto! Sarò la tua guida."
local speakerName = "Cavaliere Antico"
generalChannel:DisplaySystemMessage(message, speakerName)
Immagine che mostra una statua di cavaliere NPC che trasmette un messaggio nella finestra della chat, insieme a una bolla di chat sopra la sua testa.
© 2026 Roblox Corporation. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.