Dit voorbeeld laat zien hoe je de TextChatService klasse kunt gebruiken om je eigen frontend te ontwerpen. Het hergebruikt de standaard tekstkanalen van CreateDefaultTextChannels en is zeer eenvoudig in vergelijking met de standaard UI.
Schakel de standaard UI die bij de TextChatService wordt geleverd uit door de eigenschappen ChatWindowConfiguration.Enabled en ChatInputBarConfiguration.Enabled in het Eigenschappen venster van Studio op false te zetten.
Maak een vervanging voor de chatinvoerbalk. Dit is het tekstvak dat berichten verzendt wanneer de gebruiker op Enter drukt.
Maak een ScreenGui en maak deze een kind van StarterGui.
Maak een TextBox en maak deze een kind van de nieuwe ScreenGui, en herpositioneer en verander de grootte zoals gewenst.
Maak een LocalScript en maak deze een kind van de nieuwe TextBox.
Voeg de volgende code toe aan de LocalScript:
Clientlocal TextChatService = game:GetService("TextChatService")-- RBXGeneral is het standaard openbare kanaallocal 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("Verzenden van bericht mislukt")end-- Gebruikers verwachten dat het invoervak wordt leeggemaakt na het verzenden van een berichttextBox.Text = ""endend)
Maak een vervanging voor het chatvenster. Dit is de ScrollingFrame die berichten weergeeft zodra ze worden ontvangen van TextChatService.MessageReceived. Deze stap maakt ook een UIListLayout aan om de berichten automatisch te rangschikken.
Maak een andere nieuwe ScreenGui en maak deze een kind van StarterGui.
Maak een ScrollingFrame en maak deze een kind van de ScreenGui, en herpositioneer en verander de grootte zoals gewenst.
Maak een UIListLayout en maak deze een kind van de ScrollingFrame.
Maak een LocalScript en maak deze een kind van de ScrollingFrame.
Voeg de volgende code toe aan de LocalScript:
Clientlocal TextChatService = game:GetService("TextChatService")-- Functie om een nieuw tekstlabel te maken voor elk ontvangen berichtlocal 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-- Begin met luisteren naar binnenkomende berichtenTextChatService.MessageReceived:Connect(addMessageGui)