Personalizar el chatde Texto

*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 la experiencia, impulsado por Class.TextChatService, permite a los jugadores comunicarse y socializar fácilmente entre sí en las experiencias en vivo. Además de apoyar el chat de texto por defecto, puedes TextChatService la interfaz de usuario del frente.

Configuración de ventana de chat

La ventana de chat general consiste en la ventana de chat , una barra de entrada y opcionales etiquetas de canal .

Core components of the text chat window.

Las pestañas de canal están desactivadas por defecto y cada componente se puede alternar entre activado/desactivado en Studio o a través de scripting:

Directamente en la ventana Explorador de Studio, expanda la rama TextChatService y seleccione ChatWindowConfiguration, 1> Class.ChatInputBarConfiguration1> o 4> Class.ChannelTabsConfiguration4> . Luego, en la ventana 7> Propiedades7>, habilite o deshabilite el componente.

Cuando ChannelTabsConfiguration está habilitado, cada Class.TextChannel aparecerá en una pestaña como se indica en la siguiente tabla. Además, cada TextChannel1> Class.TextChannel1> creará una pestaña que coincida con la propiedad de canal de 4> Class.Instance.Name|Nom

Canal predeterminadoNombre de la pestaña
RBXGeneral General
Sistema RBX General (combinado en una sola pestaña con RBXGeneral )
RBXTeam Equipo
Suspiro RBX Nombre de usuario de otro jugador

Apariencia de ventana

La apariencia de la ventana de chat general es personalizable a través de Class.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 del 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 línea de texto para la ventana de chat.[0, 0, 0]
TextStrokeTransparencyTransparencia del trazo para el texto de la ventana de chat.0.5
HorizontalAlignmentAlineamiento horizontal de la ventana de chat.Left
VerticalAlignmentAlineamiento vertical de la ventana de chat.Top
HeightScaleEscala de altura de la ventana de chat en relación con el tamaño de la pantalla.1
WidthScaleEscala de ancho de la ventana de chat en relación con el tamaño de la pantalla.1

Apariencia de la barra de entrada

La apariencia de la barra de chat es personalizable a través de Class.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 del chat.0.2
FontFaceFont de texto de entrada de chat.BuilderSansMedium
PlaceholderColor3Color3 de texto de entrada de chat de relleno.[178, 178, 178]
TextColor3Color3 de texto de entrada de chat del jugador.[255, 255, 255]
TextSizeTamaño del texto de entrada de chat.14
TextStrokeColor3Color3 color de contorno del texto de entrada.[0, 0, 0]
TextStrokeTransparencyTransparencia del texto de la entrada de chat.0.5
AutocompleteEnabledSi el sistema de chat de texto muestra opciones de autocompletado para emojis y comandos . Los emojis se autocompletan escribiendo : seguido por caracteres no blancos, mientras que los comandos se autocompletan escribiendo / .true
KeyboardKeyCodeLos jugadores de clave adicionales pueden presionar para activar el enfoque en la barra de entrada de chat predeterminada.Slash

Apariencia de las pestañas de canal

La apariencia de las pestañas de canal se puede personalizar a través de Class.ChannelTabsConfiguration .

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 las pestañas al pasar el cursor sobre ellas.[125, 125, 125]
FontFaceFont para el texto en las pestañas de canal. enum.font.constructorsans bold|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans|constructorsans
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 de contorno del texto en las pestañas de canal.[0, 0, 0]
TextStrokeTransparencyTransparencia del texto para la pista de texto.1

Personalizar mensajes

Puede personalizar la apariencia de los cuerpos de los mensajes de chat y los prefijos usando ChatWindowMessageProperties y TextChatService.OnChatWindowAdded llamadas sin superponer 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 filtrar o resaltar los mensajes

Colorando Nombres de Usuarios

Cuando un usuario envía un mensaje de chat, su DisplayName se muestra como

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 puede aplicar gradientes de color y transparencia a los precios de los 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

Agregar etiquetas de chat

Si tu experiencia tiene usuarios con atributos especiales como estadoVIP, puedes añadir etiquetas de chat envueltas en brackets a la parte delantera de los mensajes de usuarios para resaltar sus mensajes. El siguiente Class.LocalScript en Class.Starter

VIP chat tag appended to user name in the chat window.
Añadir etiquetas de chat

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

Personalización de texto rico

Las etiquetas de color de texto rico de fuente de color de texto se pueden usar para formatar los mensajes de chat, útil si quieres aplicar formato a partes específicas del mensaje. Nota que las etiquetas de color de texto rico no soportan gradientes, pero el siguiente ejemplo de código muestra cómo puedes mover el nombre del usuario (almacenado en TextChatMessage.PrefixText )

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 desde fuentes no jugador

En algunos escenarios de diseño, es posible que desee mostrar diálogos no jugador en la ventana de chat, como "discurso" de un sistema de dirección pública o un personaje no jugador.

Sistema

Para entregar un mensaje del sistema no estilado al jugador local, simplemente llame a Class.TextChannel:DisplaySystemMessage()|DisplaySystemMessage() desde el canal por defecto de 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 pantalla añadido
generalChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)
Image showing a basic system message in the chat window.

NPC/Objeto

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

Script del cliente

local TextChatService = game:GetService("TextChatService")
local generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral
TextChatService.OnIncomingMessage = function(textChatMessage: TextChatMessage)
local properties = Instance.new("TextChatMessageProperties")
-- Buscar mensajes del sistema que contengan metadatos
if not textChatMessage.TextSource and textChatMessage.Metadata ~= "" then
-- Añade un prefijo para hacer que el mensaje se vea como si fuera enviado por un jugador
properties.PrefixText = string.format("<font color='#%s'>%s: </font>", "#50C999", textChatMessage.Metadata)
-- Añadir burbuja de chat
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.