Questo esempio mostra come utilizzare la classe TextChatService per progettare il tuo frontend.Riutilizza i canali di testo predefiniti da CreateDefaultTextChannels e è molto semplice rispetto all'interfaccia utente predefinita.
Disabilita l'interfaccia utente predefinita che viene fornita con il TextChatService impostando le proprietà ChatWindowConfiguration.Enabled e ChatInputBarConfiguration.Enabled a false nelle finestre Proprietà di Studio .
Crea una sostituzione per la barra di input della chat. Questa è la casella di testo che emette messaggi quando l'utente premere Enter .
Crea un ScreenGui e affidalo a StarterGui.
Crea un TextBox e affidalo al nuovo ScreenGui , quindi riposizionalo e ridimensionalo come desiderato.
Crea un LocalScript e affidalo al nuovo TextBox.
Aggiungi il seguente codice al LocalScript :
Clientelocal 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("Failed to send message")end-- Gli utenti si aspettano che la casella di input venga cancellata dopo aver inviato un MessaggiotextBox.Text = ""endend)
Crea una sostituzione per la finestra di chat.Questo è il ScrollingFrame che mostra i messaggi come vengono ricevuti da TextChatService.MessageReceived .Questo passaggio crea anche un UIListLayout per impostare automaticamente i messaggi.
Crea un altro nuovo ScreenGui e affidalo a StarterGui .
Crea un ScrollingFrame e affidalo al ScreenGui , quindi riposizionalo e ridimensionalo come desiderato.
Crea un UIListLayout e affidalo al ScrollingFrame.
Crea un LocalScript e affidalo al ScrollingFrame.
Aggiungi il seguente codice al LocalScript :
Clientelocal 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 a ascoltare i messaggi in arrivoTextChatService.MessageReceived:Connect(addMessageGui)
Prova la tua esperienza inviando messaggi nella barra di input della chat.Dovresti vedere i messaggi apparire nella finestra di chat.Puoi quindi espandere questo esempio aggiungendo funzionalità come il focus del TextBox quando viene premuta una chiave o aggiungendo tag di chat .