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.

Canale predefinitoNome della scheda
RBXGeneral Generale
RBXSystem Generale (combinato in una singola scheda con RBXGeneral )
RBXTeam Squadra
RBXWhisperNome utente dell'altro giocatore

Aspetto della finestra

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

Aspetto della 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

Aspetto delle 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 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.

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

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.LocalPlayer
local generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral
local PREFIX = "[Guide] Welcome "
-- Invia "messaggio di sistema" al giocatore con il suo nome visualizzato appuntato
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 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)
Image showing a knight statue NPC broadcasting a chat message to the chat window, along with a chat bubble above its head.