Este ejemplo muestra cómo utilizar la clase TextChatService para diseñar tu propio frontend. Reutiliza los canales de texto predeterminados de CreateDefaultTextChannels y es muy simple en comparación con la interfaz de usuario predeterminada.
Desactiva la interfaz de usuario predeterminada que viene con el TextChatService configurando las propiedades ChatWindowConfiguration.Enabled y ChatInputBarConfiguration.Enabled en false en la ventana Propiedades de Studio.
Crea un reemplazo para la barra de entrada de chat. Esta es la caja de texto que emite mensajes cuando el usuario presiona Enter.
Crea un ScreenGui y agrégalo a StarterGui.
Crea un TextBox y agrégalo al nuevo ScreenGui, luego reposiciona y cambia el tamaño según desees.
Crea un LocalScript y agrégalo al nuevo TextBox.
Agrega el siguiente código al LocalScript:
Clientlocal TextChatService = game:GetService("TextChatService")-- RBXGeneral es el canal público predeterminadolocal RBXGeneral = TextChatService:FindFirstChild("TextChannels"):WaitForChild("RBXGeneral")local textBox = script.ParenttextBox.FocusLost:Connect(function(enterPressed)local text = textBox.Textif enterPressed and #text > 0 thenlocal success, response = pcall(function()return RBXGeneral:SendAsync(textBox.Text)end)if not success thenRBXGeneral:DisplaySystemMessage("Error al enviar el mensaje")end-- Los usuarios esperan que la caja de entrada se limpie después de enviar un mensajetextBox.Text = ""endend)
Crea un reemplazo para la ventana de chat. Este es el ScrollingFrame que muestra los mensajes a medida que son recibidos desde TextChatService.MessageReceived. Este paso también crea un UIListLayout para organizar automáticamente los mensajes.
Crea otro nuevo ScreenGui y agrégalo a StarterGui.
Crea un ScrollingFrame y agrégalo al ScreenGui, luego reposiciona y cambia el tamaño según desees.
Crea un UIListLayout y agrégalo al ScrollingFrame.
Crea un LocalScript y agrégalo al ScrollingFrame.
Agrega el siguiente código al LocalScript:
Clientlocal TextChatService = game:GetService("TextChatService")-- Función para crear una nueva etiqueta de texto para cada mensaje recibidolocal function addMessageGui(textChatMessage: TextChatMessage)local isOutgoingMessage = textChatMessage.Status == Enum.TextChatMessageStatus.Sendinglocal parent = script.Parentlocal originalLabel = parent:FindFirstChild(textChatMessage.MessageId)if originalLabel thenoriginalLabel.Text = textChatMessage.TextoriginalLabel.BackgroundTransparency = if isOutgoingMessage then 0.5 else 0elselocal textLabel = Instance.new("TextLabel")textLabel.BorderSizePixel = 0textLabel.Font = Enum.Font.BuilderSanstextLabel.TextSize = 18textLabel.TextXAlignment = Enum.TextXAlignment.LefttextLabel.BackgroundTransparency = if isOutgoingMessage then 0.5 else 0textLabel.BackgroundColor3 = Color3.fromRGB(0, 0, 0)textLabel.TextColor3 = Color3.fromRGB(255, 255, 255)textLabel.Name = textChatMessage.MessageIdtextLabel.AutomaticSize = Enum.AutomaticSize.XYtextLabel.Text = textChatMessage.TexttextLabel.Parent = parentendend-- Comenzar a escuchar mensajes entrantesTextChatService.MessageReceived:Connect(addMessageGui)
Prueba tu juego enviando mensajes en la barra de entrada de chat. Deberías ver los mensajes aparecer en la ventana de chat. Luego puedes expandir este ejemplo añadiendo características como enfocar el TextBox cuando se presiona una tecla o agregar etiquetas de chat.