Personalizzare la Chatdi testo

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

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

Configurazione della finestra di chat

La finestra di chat generale consiste della finestra di chat, di una barra di input e di opzionali schede di canale.

Core components of the text chat window.

Le schede del canale sono disabilitate per impostazione predefinita e ogni component può essere attivato/disattivato in Studio o tramite scripting:

Direttamente nella finestra Explorer di Studio, espandi il ramo TextChatService e seleziona ChatWindowConfiguration , 1> Class.ChatInputBarConfiguration1> o 4> Class.ChannelTabsConfiguration4> . Quindi, nella finestra 7> Proprietà7>, abilita o disabilita il component.

Quando ChannelTabsConfiguration è abilitato, ogni Class.TextChannel apparirà in una scheda come descritti nella seguente tabella. Inoltre, ogni TextChannel1> Class.TextChannel1> creerà una scheda corrispondente alla Proprietàdel canale 4> Class.Instance.

Canale predefinitoNome della scheda
RBXGeneral Generale
RBXSystem Generale (combinato in una singola scheda con RBXGeneral )
RBXTeam Squadra
RBXWhisper Nome utente di un altro Giocatore

Aspetto della finestra

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

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

Aspetto della barra di input

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

ChatInputBarConfiguration instance in Explorer hierarchy.
ProprietàDescrizionePredefinito
BackgroundColor3Color3 colore di sfondo della barra di input della chat.[25, 27, 29]
BackgroundTransparencyTrasparenza del background della barra di input della chat.0.2
FontFaceFont di testo di input di chat.BuilderSansMedium
PlaceholderColor3Color3 di testo di input di chat di placeholder.[178, 178, 178]
TextColor3Color3 di testo di ingresso della chat giocatore.[255, 255, 255]
TextSizeDimensione del testo di input della chat.14
TextStrokeColor3Color3 colore di trattamento del testo di ingresso della chat.[0, 0, 0]
TextStrokeTransparencyTrasparenza del tratto per il testo di ingresso della chat.0.5
AutocompleteEnabledIndipendentemente dal fatto che il sistema di chat di testo mostri opzioni di completamento automatico per emoji e comandi . Gli emoji vengono completati automaticamente digitando : seguito da caratteri non spaziosi, mentre i comandi vengono completati automaticamente digitando / .true
KeyboardKeyCodeI giocatori chiave aggiuntivi possono premere per attivare il focus sull'input di chat predefinito.Slash

Aspetto delle schede del canale

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

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

Personalizzare i messaggi

Puoi personalizzare l'aspetto dei messaggi di chat e dei premi di ChatWindowMessageProperties e TextChatService.OnChatWindowAdded callback senza sovrascrivere l'interfaccia utente esistente. Le opzioni di personalizzazione ti consentono di modificare l'aspetto dei messaggi di chat per corrispondere all'argomento della tua esperienza e puoi anche ordinare o evidenziare i messaggi

Colorare i nomi utente

Quando un utente invia un Messaggiodi chat, il suo DisplayName viene visualizz

Colored user name in the chat window.
Script locale - Colori di 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 gradi di trasparenza ai premi del messaggio di colore usando UIGradient .

Gradient user name in the chat window.
Colori 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

Aggiungere Tag di Chat

Se la tua esperienza ha utenti con attributi speciali come lo StatoVIP, puoi aggiungere tag di chat avvolti in parentesi alla parte anteriore dei messaggi dell'utente per evidenziare i loro messaggi. Il seguente LocalScript in 2> Class

VIP chat tag appended to user name in the chat window.
Tag di chat di appuntamento

local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
local chatWindowConfiguration = TextChatService.ChatWindowConfiguration
TextChatService.OnChatWindowAdded = function(message: TextChatMessage)
local properties = chatWindowConfiguration:DeriveNewMessageProperties()
if message.TextSource then
local player = Players:GetPlayerByUserId(message.TextSource.UserId)
if player:GetAttribute("IsVIP") then
properties.PrefixText = "[VIP] " .. message.PrefixText
properties.PrefixTextProperties = chatWindowConfiguration:DeriveNewMessageProperties()
properties.PrefixTextProperties.TextColor3 = Color3.fromRGB(255, 125, 50)
end
end
return properties
end

Personalizzazione del testo ricco

I colori di carattere possono essere usati per formattare i messaggi di chat, utile se si vuole applicare la formattazione alle parti molto specifiche del Messaggio. Nota che i colori di carattere non supportano i gradienti, ma il seguente esempio di codice mostra come si può spostare il nome utente ( memorizzato in Class.TextChatMessage.PrefixText ) nel corpo del messaggio e quindi applicare il taglio di carattere per solo la parte

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

Invio di messaggi da fonti non giocatore

In alcuni scenari di progettazione, potresti voler mostrare un dialogo non giocatore nella finestra di chat, come "parola" da un sistema di indirizzo pubblico o un personaggio non giocatore.

Sistema

Per fornire un messaggio del sistema non stilato al Giocatorelocale, chiama semplicemente 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 "system Messaggio" al giocatore con il loro nome visualizzato
generalChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)
Image showing a basic system message in the chat window.

NPC/Oggetto

Puoi anche stilizzare il dialogo non giocatore e aggiungere bolle di chat per farlo sembrare come se i messaggi provengano da un NPC o un oggetto all'interno del Mondo3D.

Script del client

local TextChatService = game:GetService("TextChatService")
local generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral
TextChatService.OnIncomingMessage = function(textChatMessage: TextChatMessage)
local properties = Instance.new("TextChatMessageProperties")
-- Controlla i messaggi del sistema che contengono metadati
if not textChatMessage.TextSource and textChatMessage.Metadata ~= "" then
-- Aggiungi un prefisso per far sembrare il messaggio che è stato inviato da un Giocatore
properties.PrefixText = string.format("<font color='#%s'>%s: </font>", "#50C999", textChatMessage.Metadata)
-- Aggiungi 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.