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 .
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 predeterminado | Nombre 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 .
Propiedad | Descripción | Por defecto |
---|---|---|
BackgroundColor3 | Color3 color de fondo de la ventana de chat. | [25, 27, 29] |
BackgroundTransparency | Transparencia del fondo de la ventana de chat. | 0.3 |
FontFace | Font del texto de la ventana de chat. | BuilderSansMedium |
TextColor3 | Color3 de texto de la ventana de chat. | [255, 255, 255] |
TextSize | Tamaño del texto de la ventana de chat. | 14 |
TextStrokeColor3 | Color3 de la línea de texto para la ventana de chat. | [0, 0, 0] |
TextStrokeTransparency | Transparencia del trazo para el texto de la ventana de chat. | 0.5 |
HorizontalAlignment | Alineamiento horizontal de la ventana de chat. | Left |
VerticalAlignment | Alineamiento vertical de la ventana de chat. | Top |
HeightScale | Escala de altura de la ventana de chat en relación con el tamaño de la pantalla. | 1 |
WidthScale | Escala 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 .
Propiedad | Descripción | Por defecto |
---|---|---|
BackgroundColor3 | Color3 color de fondo de la barra de entrada de chat. | [25, 27, 29] |
BackgroundTransparency | Transparencia del fondo de la barra de entrada del chat. | 0.2 |
FontFace | Font de texto de entrada de chat. | BuilderSansMedium |
PlaceholderColor3 | Color3 de texto de entrada de chat de relleno. | [178, 178, 178] |
TextColor3 | Color3 de texto de entrada de chat del jugador. | [255, 255, 255] |
TextSize | Tamaño del texto de entrada de chat. | 14 |
TextStrokeColor3 | Color3 color de contorno del texto de entrada. | [0, 0, 0] |
TextStrokeTransparency | Transparencia del texto de la entrada de chat. | 0.5 |
AutocompleteEnabled | Si 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 |
KeyboardKeyCode | Los 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 .
Propiedad | Descripción | Por defecto |
---|---|---|
BackgroundColor3 | Color3 color de fondo de las pestañas de canal. | [25, 27, 29] |
BackgroundTransparency | Transparencia del fondo de las pestañas de canal. | 0 |
HoverBackgroundColor3 | Color3 color de fondo de las pestañas al pasar el cursor sobre ellas. | [125, 125, 125] |
FontFace | Font 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 |
TextColor3 | Color3 de texto en una pestaña no seleccionada. | [175, 175, 175] |
SelectedTabTextColor3 | Color3 de texto en una pestaña seleccionada. | [255, 255, 255] |
TextSize | Tamaño del texto en las pestañas de canal. | 18 |
TextStrokeColor3 | Color3 color de contorno del texto en las pestañas de canal. | [0, 0, 0] |
TextStrokeTransparency | Transparencia 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
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 .
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
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 )
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.LocalPlayerlocal generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGenerallocal PREFIX = "[Guide] Welcome "-- Enviar "mensaje del sistema" al jugador con su nombre de pantalla añadidogeneralChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)
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)