Dieses Beispiel zeigt, wie man die TextChatService-Klasse verwendet, um ein eigenes Frontend zu gestalten. Es verwendet die standardmäßigen Textkanäle von CreateDefaultTextChannels und ist im Vergleich zur Standard-UI sehr einfach.
Deaktivieren Sie die standardmäßige UI, die mit dem TextChatService geliefert wird, indem Sie die Eigenschaften ChatWindowConfiguration.Enabled und ChatInputBarConfiguration.Enabled im Eigenschaftenfenster von Studio auf false setzen.
Erstellen Sie einen Ersatz für die Chat-Eingabezeile. Dies ist das Textfeld, das Nachrichten sendet, wenn der Benutzer Enter drückt.
Erstellen Sie ein ScreenGui und fügen Sie es StarterGui hinzu.
Erstellen Sie ein TextBox und fügen Sie es dem neuen ScreenGui hinzu, und positionieren und ändern Sie die Größe nach Wunsch.
Erstellen Sie ein LocalScript und fügen Sie es dem neuen TextBox hinzu.
Fügen Sie den folgenden Code in das LocalScript ein:
Clientlocal TextChatService = game:GetService("TextChatService")-- RBXGeneral ist der standardmäßige öffentliche 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("Nachricht konnte nicht gesendet werden")end-- Benutzer erwarten, dass das Eingabefeld nach dem Senden einer Nachricht geleert wirdtextBox.Text = ""endend)
Erstellen Sie einen Ersatz für das Chat-Fenster. Dies ist das ScrollingFrame, das Nachrichten anzeigt, wenn sie von TextChatService.MessageReceived empfangen werden. Dieser Schritt erstellt auch ein UIListLayout, um die Nachrichten automatisch anzuordnen.
Erstellen Sie ein weiteres neues ScreenGui und fügen Sie es StarterGui hinzu.
Erstellen Sie ein ScrollingFrame und fügen Sie es dem ScreenGui hinzu, und positionieren und ändern Sie die Größe nach Wunsch.
Erstellen Sie ein UIListLayout und fügen Sie es dem ScrollingFrame hinzu.
Erstellen Sie ein LocalScript und fügen Sie es dem ScrollingFrame hinzu.
Fügen Sie den folgenden Code in das LocalScript ein:
Clientlocal TextChatService = game:GetService("TextChatService")-- Funktion zum Erstellen eines neuen Text-Labels 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-- Beginnen Sie, auf eingehende Nachrichten zu hörenTextChatService.MessageReceived:Connect(addMessageGui)
Testen Sie Ihr Spiel, indem Sie Nachrichten in der Chat-Eingabezeile senden. Sie sollten die Nachrichten im Chat-Fenster erscheinen sehen. Sie können dieses Beispiel dann erweitern, indem Sie Funktionen hinzufügen, wie das Fokussieren des TextBox, wenn eine Taste gedrückt wird, oder das Hinzufügen von Chat-Tags.