Personalize a janela de chat

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

O sistema de chat de texto in-game, alimentado pelo TextChatService, permite que os jogadores se comuniquem e socializem facilmente entre si em jogos ao vivo. Além de suportar o chat de texto padrão, você pode customizar a interface do usuário do front-end.

Configuração da janela de chat

A janela de chat geral consiste em:

  • Janela de chat
  • Barra de entrada
  • Abas de canal (opcional)
Componentes principais da janela de chat de texto.

As abas de canal estão desativadas por padrão e cada componente pode ser ativado ou desativado no Studio ou através de script:

Na janela do Explorer, expanda o ramo TextChatService e selecione ChatWindowConfiguration, ChatInputBarConfiguration ou ChannelTabsConfiguration. Em seguida, ative ou desative o componente na janela de Properties.

Quando ChannelTabsConfiguration está ativada, cada TextChannel padrão aparece em uma aba conforme destacado na tabela a seguir. Além disso, cada TextChannel personalizada cria uma aba correspondente à propriedade Name do canal.

Canal padrãoNome da aba
RBXGeneralGeral
RBXSystemGeral (combinado em uma única aba com RBXGeneral)
RBXTeamEquipe
RBXWhisperNome de usuário do outro jogador

Aparência da janela

A aparência da janela de chat geral é personalizável através de ChatWindowConfiguration.

Instância ChatWindowConfiguration na hierarquia do Explorer.
PropriedadeDescriçãoPadrão
BackgroundColor3Cor de fundo Color3 da janela de chat.[25, 27, 29]
BackgroundTransparencyTransparência do fundo da janela de chat.0.3
EnabledSe deve mostrar a janela de chat padrão. Defina como false para ocultar.true
FontFaceFont do texto da janela de chat.BuilderSansMedium
TextColor3Color3 do texto da janela de chat.[255, 255, 255]
TextSizeTamanho do texto da janela de chat.14
TextStrokeColor3Color3 do contorno do texto da janela de chat.[0, 0, 0]
TextStrokeTransparencyTransparência do contorno do texto da janela de chat.0.5
HorizontalAlignmentAlinhamento horizontal da janela de chat.Left
VerticalAlignmentAlinhamento vertical da janela de chat.Top
HeightScaleEscala da altura da janela de chat em relação ao tamanho da tela.1
WidthScaleEscala da largura da janela de chat em relação ao tamanho da tela.1

Aparência da barra de entrada

A aparência da barra de entrada do chat é personalizável através de ChatInputBarConfiguration.

Instância ChatInputBarConfiguration na hierarquia do Explorer.
PropriedadeDescriçãoPadrão
BackgroundColor3Cor de fundo Color3 da barra de entrada do chat.[25, 27, 29]
BackgroundTransparencyTransparência do fundo da barra de entrada do chat.0.2
FontFaceFont do texto de entrada do chat.BuilderSansMedium
PlaceholderColor3Color3 do texto de entrada de chat do espaço reservado.[178, 178, 178]
TextColor3Color3 do texto de entrada de chat inserido pelo jogador.[255, 255, 255]
TextSizeTamanho do texto de entrada do chat.14
TextStrokeColor3Color3 cor do contorno do texto de entrada do chat.[0, 0, 0]
TextStrokeTransparencyTransparência do contorno para o texto de entrada do chat.0.5
AutocompleteEnabledSe o sistema de chat de texto mostra opções de autocompletar para emojis e comandos. Emojis são completados automaticamente digitando : seguido de caracteres que não sejam espaço, enquanto comandos são completados automaticamente digitando /.true
KeyboardKeyCodeTecla adicional que os jogadores podem pressionar para ativar o foco na barra de entrada de chat padrão.Slash

Aparência das abas de canal

A aparência das abas de canal é personalizável através de ChannelTabsConfiguration.

Instância ChannelTabsConfiguration na hierarquia do Explorer.
PropriedadeDescriçãoPadrão
BackgroundColor3Cor de fundo Color3 das abas de canal.[25, 27, 29]
BackgroundTransparencyTransparência do fundo das abas de canal.0
HoverBackgroundColor3Cor de fundo Color3 das abas ao passar o mouse sobre elas.[125, 125, 125]
FontFaceFont para o texto nas abas de canal.BuilderSansBold
TextColor3Color3 do texto em uma aba não selecionada.[175, 175, 175]
SelectedTabTextColor3Color3 do texto em uma aba selecionada.[255, 255, 255]
TextSizeTamanho do texto nas abas de canal.18
TextStrokeColor3Color3 cor do contorno do texto nas abas de canal.[0, 0, 0]
TextStrokeTransparencyTransparência do contorno para o texto nas abas de canal.1

Personalizar mensagens

Você pode personalizar a aparência dos corpos de mensagens de chat e dos prefixos usando ChatWindowMessageProperties e os callbacks TextChatService.OnChatWindowAdded sem sobrescrever a UI existente. As opções de personalização permitem que você modifique a aparência das mensagens de chat para combinar com o tema do seu jogo, e você também pode classificar ou destacar mensagens de diferentes grupos de usuários colorindo prefixos ou adicionando tags de chat.

Colorir nomes de usuários

Quando um usuário envia uma mensagem de chat, seu DisplayName é exibido como a parte do prefixo da mensagem. Por padrão, o nome de cada usuário é colorido de acordo com seu Player.TeamColor, mas você pode mudar as cores dos nomes de chat usando ChatWindowMessageProperties e OnChatWindowAdded. O seguinte LocalScript em StarterPlayerScripts atribui uma cor predeterminada a cada usuário, escolhendo aleatoriamente de uma tabela de cores RGB.

Nome de usuário colorido na janela de chat.
LocalScript - Cores Aleatórias para Nomes de Usuário

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

Você também pode aplicar gradientes de cor e transparência para colorir prefixos de mensagens usando UIGradient.

Nome de usuário em gradiente na janela de chat.
Cores de Nomes de Usuário em 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

Personalização de texto rico

Tags de cor de fonte de texto rico podem ser usadas para formatar mensagens de chat, útil se você quiser aplicar formatação a partes muito específicas da mensagem. Observe que texto rico não suporta gradientes, mas o seguinte exemplo de código mostra como você pode mover o nome de usuário (armazenado em TextChatMessage.PrefixText) para o corpo da mensagem e, em seguida, aplicar tagging de texto rico apenas à parte do nome.

Personalização de texto rico do nome de usuário na janela de chat.
Personalização de Texto Rico

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

Mensagens de fontes não-jogadoras

Quando TextChatService.CreateDefaultTextChannels está true, um dos canais de texto padrão é o canal RBXSystem. Os scripts de chat padrão exibem automaticamente mensagens do sistema neste canal. Você pode personalizar a aparência destas mensagens usando o callback TextChannel.OnIncomingMessage.

Você pode querer personalizar ou alterar as mensagens do sistema que são automaticamente emitidas pelo sistema de chat. Como as mensagens do sistema padrão são localizadas para os usuários, você deve referenciá-las pelo TextChatMessage.Metadata em seus callbacks de chat de texto se desejar personalizar sua aparência. Por exemplo, você poderia usar Metadata para identificar mensagens do sistema, mensagens de erro ou mensagens de sistemas específicos no seu jogo.

Sistema

Para entregar uma mensagem do sistema ao jogador local, como "discurso" de um sistema de endereçamento público, chame DisplaySystemMessage() a partir do canal padrão RBXGeneral com um prefixo antes do nome de exibição do jogador.

Script Cliente

local Players = game:GetService("Players")
local TextChatService = game:GetService("TextChatService")
local player = Players.LocalPlayer
local generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral
local PREFIX = "[Guia] Bem-vindo "
-- Enviar "mensagem do sistema" para o jogador com seu nome de exibição anexado
generalChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)
Imagem mostrando uma mensagem do sistema básica na janela de chat.

NPC/objeto

Você também pode estilizar diálogos de não-jogadores e adicionar bolhas de chat para fazer parecer que as mensagens estão vindo de um NPC ou objeto dentro do mundo 3D.

Script Cliente

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")
-- Verificar mensagens do sistema que contêm metadados
if not textChatMessage.TextSource and textChatMessage.Metadata ~= "" then
-- Adicionar prefixo para fazer a mensagem parecer que foi enviada por um jogador
properties.PrefixText = string.format("<font color='#%s'>%s: </font>", "#50C999", textChatMessage.Metadata)
-- Adicionar bolha de chat
TextChatService:DisplayBubble(Workspace.Statue, textChatMessage.Text)
end
return properties
end
local message = "Bem-vindo! Eu serei seu guia."
local speakerName = "Cavaleiro Antigo"
generalChannel:DisplaySystemMessage(message, speakerName)
Imagem mostrando um NPC de estátua de cavaleiro transmitindo uma mensagem de chat para a janela de chat, junto com uma bolha de chat acima de sua cabeça.
©2026 Roblox Corporation, Roblox, o logotipo Roblox e Powering Imagination estão entre nossas marcas registradas e não registradas nos EUA e em outros países.