Personalizar la ventana de chat

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

El sistema de chat de texto en experiencia , impulsado por , permite que los jugadores se comuniquen y socialicen fácilmente entre sí en experiencias en vivo.Además de soportar el chat de texto predeterminado, puedes personalizar la interfaz de usuario frontal.

Configuración de la ventana de chat

La ventana de chat general consiste en:

  • Ventana de chat
  • Barra de entrada
  • Pestañas de canal (opcional)
Core components of the text chat window.

Las pestañas de canal están deshabilitadas por defecto y cada componente se puede alternar en y apagar en Studio o a través de scripting:

En la ventana Explorador, expanda la rama TextChatService y seleccione ChatWindowConfiguration , ChatInputBarConfiguration o ChannelTabsConfiguration .Luego habilita o deshabilita el componente en la ventana Propiedades.

Cuando ChannelTabsConfiguration está habilitado, cada predeterminado TextChannel aparece en una pestaña como se describe en la siguiente tabla.Además, cada personalizado TextChannel crea una pestaña que corresponde a la propiedad del canal Name .

canalpredeterminadoNombre de pestaña
RBXGeneral Generales
Sistema RBX General (combinado en una sola pestaña con RBXGeneral )
Equipo RBX El equipo
Silbido de RBX Nombre de usuario del otro jugador

aspecto, lookde la ventana

La apariencia de la ventana de chat general es personalizable a través de ChatWindowConfiguration .

ChatWindowConfiguration instance in Explorer hierarchy.
PropiedadDescripciónPor defecto
BackgroundColor3Color3 color de fondo de la ventana de chat.[25, 27, 29]
BackgroundTransparencyTransparencia del fondo de la ventana de chat.0.3
FontFaceFont de texto de la ventana de chat.BuilderSansMedium
TextColor3Color3 de texto de la ventana de chat.[255, 255, 255]
TextSizeTamaño del texto de la ventana de chat.14
TextStrokeColor3Color3 de la barra para el texto de la ventana de chat.[0, 0, 0]
TextStrokeTransparencyTransparencia del trazado para el texto de la ventana de chat.0.5
HorizontalAlignmentAlineación horizontal de la ventana de chat.Left
VerticalAlignmentAlineación vertical de la ventana de chat.Top
HeightScaleEscala de altura de la ventana de chat relativa al tamaño de la pantalla.1
WidthScaleEscala de ancho de la ventana de chat relativa al tamaño de la pantalla.1

aspecto, lookde la barra de entrada

La apariencia de la barra de entrada de chat es personalizable a través de ChatInputBarConfiguration.

ChatInputBarConfiguration instance in Explorer hierarchy.
PropiedadDescripciónPor defecto
BackgroundColor3Color3 color de fondo de la barra de entrada de chat.[25, 27, 29]
BackgroundTransparencyTransparencia del fondo de la barra de entrada de chat.0.2
FontFaceFont de texto de entrada de chat.BuilderSansMedium
PlaceholderColor3Color3 de texto de entrada de chat de marcador de posición.[178, 178, 178]
TextColor3Color3 del texto de entrada de chat ingresado por el jugador.[255, 255, 255]
TextSizeTamaño del texto de entrada de chat.14
TextStrokeColor3Color3 color del trazado del texto de entrada de chat.[0, 0, 0]
TextStrokeTransparencyTransparencia del trazado para el texto de entrada de chat.0.5
AutocompleteEnabledSi el sistema de chat de texto muestra opciones de autocompletado para emojis y comandos .Los emojis se completan automáticamente escribiendo : seguido de caracteres no blancos, mientras que los comandos se completan automáticamente escribiendo / .true
KeyboardKeyCodeLos jugadores clave adicionales pueden presionar para activar el enfoque en la barra de entrada de chat predeterminada.Slash

aspecto, lookde las pestañas de canal

La apariencia de las pestañas del canal es personalizable a través de .

ChannelTabsConfiguration instance in Explorer hierarchy.
PropiedadDescripciónPor defecto
BackgroundColor3Color3 color de fondo de las pestañas de canal.[25, 27, 29]
BackgroundTransparencyTransparencia del fondo de las pestañas de canal.0
HoverBackgroundColor3Color3 color de fondo de pestañas cuando se pasa el cursor sobre ellas.[125, 125, 125]
FontFaceFont para el texto en las pestañas de canal.BuilderSansBold
TextColor3Color3 de texto en una pestaña no seleccionada.[175, 175, 175]
SelectedTabTextColor3Color3 de texto en una pestaña seleccionada.[255, 255, 255]
TextSizeTamaño del texto en las pestañas de canal.18
TextStrokeColor3Color3 color del trazado del texto en las pestañas de canal.[0, 0, 0]
TextStrokeTransparencyTransparencia del trazado para texto en pestañas de canal.1

Personalizar mensajes

Puedes personalizar la apariencia de los cuerpos de mensajes de chat y los prefijos usando ChatWindowMessageProperties y TextChatService.OnChatWindowAdded llamadas de devolución sin anular la interfaz de usuario existente.Las opciones de personalización le permiten modificar la apariencia de los mensajes de chat para que coincida con el tema de su experiencia, y también puede ordenar o resaltar mensajes de diferentes grupos de usuarios coloreando prefijos o agregando etiquetas de chat.

Nombres de usuario de color

Cuando un usuario envía un mensaje de chat, su DisplayName se muestra como la parte del prefijo del mensaje.Por defecto, el nombre de cada usuario se colorea según su Player.TeamColor pero puedes cambiar los colores de los nombres de chat usando ChatWindowMessageProperties y OnChatWindowAdded .El siguiente LocalScript en StarterPlayerScripts asigna un color predeterminado a cada usuario, seleccionando aleatoriamente de una tabla de colores RGB.

Colored user name in the chat window.
LocalScript - Colores de nombre de usuario aleatorios

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

También puedes aplicar gradientes de color y transparencia a los prefijos de mensajes de color usando UIGradient.

Gradient user name in the chat window.
Colores de nombre de usuario degradados

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

Personalización de texto rico

Las etiquetas de color de fuente de texto rico se pueden usar para formatar mensajes de chat, útil si desea aplicar formato a partes muy específicas del mensaje.Tenga en cuenta que el texto enriquecido no admite gradientes, pero el siguiente ejemplo de código muestra cómo puede mover el nombre de usuario (almacenado en TextChatMessage.PrefixText) al cuerpo del mensaje y luego aplicar la etiqueta de texto enriquecido solo a la parte del nombre.

Rich text customization of user name in the chat window.
Personalización 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

Enviar mensajes de fuentes no jugadoras

A veces, querrás mostrar diálogo no jugador en la ventana de chat, como "discurso" de un sistema de direcciones públicas o un personaje no jugador.

Sistema

Para enviar un mensaje del sistema al jugador local, llame a DisplaySystemMessage() desde el canal predeterminado RBXGeneral con un prefijo antes del nombre de visualización del jugador.

Script del cliente

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 "
-- Enviar "mensaje del sistema" al jugador con su nombre de visualización añadido
generalChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)
Image showing a basic system message in the chat window.

Para una guía más detallada sobre cómo personalizar la apariencia de los mensajes del sistema, vea Personalización de mensajes del sistema.

Mensajes del sistema predeterminados

Cuando TextChatService.CreateDefaultTextChannels es true, uno de los canales de texto predeterminados es el canal RBXSystem.Los scripts de chat predeterminados muestran automáticamente mensajes del sistema en este canal.Puedes personalizar la apariencia de estos mensajes usando el retorno de llamada TextChannel.OnIncomingMessage.

Quizás quieras personalizar o modificar los mensajes del sistema que se emiten automáticamente por el sistema de chat.Dado que los mensajes del sistema predeterminados se localizan para los usuarios, deberías referenciarlo por TextChatMessage.Metadata en tus llamadas de chat de texto si deseas personalizar su aspecto, look.

A continuación se muestra una referencia de los mensajes del sistema predeterminados que emite el sistema de chat:

MetadatosDescripción
Roblox.ChatTranslation.ChatWindow.Mensaje del sistemaIndica que el sistema puede traducir mensajes de chat para el Jugador
Roblox.Notification.Friend.UnidoSe muestra cuando uno de los amigos del jugador se une a la experiencia
Roblox.MessageStatus.Atención/advertencia.FloodcheckedSe muestra cuando el mensaje de texto enviado por el Jugador fue limitado por el Servidor
Roblox.MessageStatus.Atención/advertencia.TextFilterFailedSe muestra cuando el mensaje de chat de texto enviado por el Jugador no se pudo mostrar debido a un problema de filtro de texto
Roblox.MessageStatus.Advertencia.Configuración de privacidad inválidaSe muestra cuando las configuraciones de privacidad del jugador les impiden enviar un mensaje de chat de texto
Roblox.MessageStatus.Atención/advertencia.MessageDemasiado largoSe muestra cuando el jugador envía un mensaje de chat de texto con contenido demasiado largo
Roblox.MessageStatus.Atención/advertencia.DesconocidoSe muestra cuando el sistema no envía el mensaje de chat del jugador por una razón desconocida
Roblox.Help.InfoMuestra la respuesta del comando TextChat de RBXHelpCommand
Roblox.Version.InformaciónMuestra la respuesta del comando TextChat de RBXVersionCommand
Roblox.Team.Success.Ahora en equipoSe muestra cuando el equipo del jugador cambia
Roblox.Team.Error.CannotTeamChatIfNotInTeamMostrado cuando el Jugador trigue el comando de chat de texto RBXTeamCommand sin estar en un Team
Roblox.Whisper.Info.ÉxitoSe muestra cuando el jugador inicia con éxito una conversación de susurro
Roblox.Whisper.Welcome.SentidoSe muestra al ingresar a un canal de texto susurrado
Roblox.Whisper.Error.No se puede susurrar a sí mismoUna respuesta de error del RBXWhisperCommand TextChatCommand
Roblox.Whisper.Error.ObjetivoNoExisteUna respuesta de error del RBXWhisperCommand TextChatCommand
Roblox.Whisper.Error.Demasiados partidosUna respuesta de error del RBXWhisperCommand TextChatCommand
Roblox.Whisper.Error.UnknowedUna respuesta de error del RBXWhisperCommand TextChatCommand
Roblox.Emote.Error.No existeUna respuesta de error del comando TextChatCommand de RBXEmoteCommand
Roblox.Emote.Error.UserEmotesNoEnabledUna respuesta de error del comando TextChatCommand de RBXEmoteCommand
Roblox.Emote.Error.Temporalmente no disponibleUna respuesta de error del comando TextChatCommand de RBXEmoteCommand
Roblox.Emote.Error.No soportadoUna respuesta de error del comando TextChatCommand de RBXEmoteCommand
Roblox.Emote.Error.Cambiar a R15Una respuesta de error del comando TextChatCommand de RBXEmoteCommand
Roblox.Emote.Error.AnimaciónReproduciendoUna respuesta de error del comando TextChatCommand de RBXEmoteCommand
Roblox.Mute.Error.JugadorDesconocidoUna respuesta de error del comando TextChatCommand de RBXMuteCommand
Roblox.Mute.Error.MultipleMatchesUna respuesta de error del comando TextChatCommand de RBXMuteCommand
Roblox.Mute.Error.No se puede silenciar a sí mismoUna respuesta de error del comando TextChatCommand de RBXMuteCommand
Roblox.Mute.Info.ÉxitoUna respuesta de éxito del comando TextChatCommand de RBXMuteCommand
Roblox.Unmute.Error.PlayerNotFoundUna respuesta de error del comando TextChatCommand de RBXUnmuteCommand
Roblox.Unmute.Error.MultipleMatchesUna respuesta de error del comando TextChatCommand de RBXUnmuteCommand
Roblox.Unmute.Error.No puedo silenciarmeUna respuesta de error del comando TextChatCommand de RBXUnmuteCommand
Roblox.Unmute.Info.ÉxitoUna respuesta de éxito del comando TextChatCommand de RBXUnmuteCommand

NPC/objeto

También puedes estilizar el diálogo no jugador y agregar burbujas de chat para hacer que parezca que los mensajes provienen de un NPC o objeto dentro del mundo 3D.

Script del 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")
-- Compruebe los mensajes del sistema que contienen metadatos
if not textChatMessage.TextSource and textChatMessage.Metadata ~= "" then
-- Añade un prefijo para hacer que el mensaje parezca que fue enviado por un jugador
properties.PrefixText = string.format("<font color='#%s'>%s: </font>", "#50C999", textChatMessage.Metadata)
-- Añadir chat de burbujas
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.