Dieses Beispiel zeigt, wie man die TextChatService-Klasse verwendet, um dein eigenes Frontend zu entwerfen.Es verwendet die Standardtextkanäle von CreateDefaultTextChannels und ist im Vergleich zur Standard-UI sehr einfach.
Deaktivieren Sie die Standard-Benutzeroberfläche, die mit der TextChatService mitgeliefert wird, indem Sie die ChatWindowConfiguration.Enabled und ChatInputBarConfiguration.Enabled Eigenschaften auf false im Studio-Fenster Eigenschaften einstellen.
Erstellen Sie einen Ersatz für die Chat-Eingabeleiste. Dies ist die Textbox, die Nachrichten aussendet, wenn der Benutzer Enter drückt.
Erstellen Sie ein ScreenGui und überlassen Sie es StarterGui .
Erstellen Sie ein TextBox und überlassen Sie es dem neuen ScreenGui, dann positionieren und skalieren es wie gewünscht.
Erstellen Sie ein LocalScript und überlassen Sie es dem neuen TextBox.
Füge den folgenden Code zum LocalScript hinzu:
Clientlocal TextChatService = game:GetService("TextChatService")-- RBXGeneral ist der Kanallocal 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-- Benutzer erwarten, dass die Eingabebox nach dem Versenden einer Nachricht geleert wirdtextBox.Text = ""endend)
Erstelle einen Ersatz für das Chat-Fenster.Das ist die ScrollingFrame, die Nachrichten anzeigt, wie sie von TextChatService.MessageReceived empfangen werden.Dieser Schritt erstellt auch ein UIListLayout, um die Nachrichten automatisch anzuordnen.
Erstelle ein weiteres neues ScreenGui und übergebe es als Eltern an StarterGui.
Erstellen Sie ein ScrollingFrame und überlassen Sie es der ScreenGui , dann positionieren Sie es neu und skalieren Sie es wie gewünscht.
Erstellen Sie ein UIListLayout und überlassen Sie es dem ScrollingFrame.
Erstellen Sie ein LocalScript und überlassen Sie es dem ScrollingFrame.
Füge den folgenden Code zum LocalScript hinzu:
Clientlocal TextChatService = game:GetService("TextChatService")-- Funktion zum Erstellen eines neuen Textlabels für jede empfangene Nachrichtlocal 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-- Beginne, eingehende Nachrichten zu hörenTextChatService.MessageReceived:Connect(addMessageGui)
Teste deine Erfahrung, indem du Nachrichten in der Chat-Eingabeleiste sendest.Du solltest sehen, dass die Nachrichten im Chat-Fenster erscheinen.Du kannst dann auf diesem Beispiel aufbauen, indem du Funktionen wie das Fokussieren von TextBox hinzufügst, wenn eine Taste gedrückt wird, oder Chat-Tags hinzufügst.