Questo esempio mostra come utilizzare la classe TextChatService per progettare il proprio frontend. Riutilizza i canali di testo predefiniti da CreateDefaultTextChannels ed è molto semplice rispetto all'interfaccia utente predefinita.
Disabilita l'interfaccia utente predefinita fornita con il TextChatService impostando le proprietà ChatWindowConfiguration.Enabled e ChatInputBarConfiguration.Enabled su false nella finestra Proprietà di Studio.
Crea un sostituto per la barra di input della chat. Questa è la casella di testo che emette messaggi quando l'utente preme Invio.
Crea un ScreenGui e parentalo a StarterGui.
Crea un TextBox e parentalo al nuovo ScreenGui, quindi riporta in posizione e ridimensiona come desiderato.
Crea un LocalScript e parentalo al nuovo TextBox.
Aggiungi il seguente codice al LocalScript:
Clientlocal TextChatService = game:GetService("TextChatService")-- RBXGeneral è il canale pubblico predefinitolocal 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("Invio del messaggio fallito")end-- Gli utenti si aspettano che la casella di input venga svuotata dopo aver inviato un messaggiotextBox.Text = ""endend)
Crea un sostituto per la finestra della chat. Questo è il ScrollingFrame che visualizza i messaggi man mano che vengono ricevuti da TextChatService.MessageReceived. Questo passaggio crea anche un UIListLayout per disporre automaticamente i messaggi.
Crea un altro nuovo ScreenGui e parentalo a StarterGui.
Crea un ScrollingFrame e parentalo al ScreenGui, quindi riporta in posizione e ridimensiona come desiderato.
Crea un UIListLayout e parentalo al ScrollingFrame.
Crea un LocalScript e parentalo al ScrollingFrame.
Aggiungi il seguente codice al LocalScript:
Clientlocal TextChatService = game:GetService("TextChatService")-- Funzione per creare una nuova etichetta di testo per ogni messaggio ricevutolocal 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-- Inizia ad ascoltare i messaggi in arrivoTextChatService.MessageReceived:Connect(addMessageGui)
Testa il tuo gioco inviando messaggi nella barra di input della chat. Dovresti vedere i messaggi apparire nella finestra della chat. Puoi quindi espandere questo esempio aggiungendo funzionalità come mettere a fuoco il TextBox quando viene premuto un tasto o aggiungendo tag per la chat.