Das In-Game-Textchat -System, das von TextChatService unterstützt wird, ermöglicht es den Spielern, einfach miteinander zu kommunizieren und zu interagieren in Live-Spielen. Neben der Unterstützung des Standard-Textchats können Sie die Benutzeroberfläche anpassen.
Konfiguration des Chatfensters
Das gesamte Chatfenster besteht aus:
- Chatfenster
- Eingabezeile
- Kanaltabs (optional)

Die Kanaltabs sind standardmäßig deaktiviert, und jede Komponente kann im Studio oder durch Skripting ein- oder ausgeschaltet werden:
Im Explorer -Fenster klicken Sie auf den TextChatService-Zweig und wählen Sie ChatWindowConfiguration, ChatInputBarConfiguration oder ChannelTabsConfiguration. Aktivieren oder deaktivieren Sie dann die Komponente im Eigenschaften -Fenster.

Wenn ChannelTabsConfiguration aktiviert ist, erscheint jeder Standard-TextChannel in einem Tab, wie in der folgenden Tabelle beschrieben. Außerdem erstellt jeder benutzerdefinierte TextChannel einen Tab, der dem Name-Eigenschaft des Kanals entspricht.
| Standardkanal | Tab-Name |
|---|---|
| RBXGeneral | Allgemein |
| RBXSystem | Allgemein (in einen einzelnen Tab mit RBXGeneral zusammengeführt) |
| RBXTeam | Team |
| RBXWhisper | Benutzername des anderen Spielers |
FensterauAppearance
Das Aussehen des gesamten Chatfensters ist anpassbar über ChatWindowConfiguration.

| Eigenschaft | Beschreibung | Standard |
|---|---|---|
| BackgroundColor3 | Color3 Hintergrundfarbe des Chatfensters. | [25, 27, 29] |
| BackgroundTransparency | Transparenz des Hintergrunds des Chatfensters. | 0.3 |
| Enabled | Ob das Standard-Chatfenster angezeigt werden soll. Auf false setzen, um es auszublenden. | true |
| FontFace | Font des Textes im Chatfenster. | BuilderSansMedium |
| TextColor3 | Color3 des Textes im Chatfenster. | [255, 255, 255] |
| TextSize | Größe des Textes im Chatfenster. | 14 |
| TextStrokeColor3 | Color3 der Kontur für den Text im Chatfenster. | [0, 0, 0] |
| TextStrokeTransparency | Transparenz der Kontur für den Text im Chatfenster. | 0.5 |
| HorizontalAlignment | Horizontale Ausrichtung des Chatfensters. | Left |
| VerticalAlignment | Vertikale Ausrichtung des Chatfensters. | Top |
| HeightScale | Höhenmaßstab des Chatfensters relativ zur Bildschirmgröße. | 1 |
| WidthScale | Breitenmaßstab des Chatfensters relativ zur Bildschirmgröße. | 1 |
Erscheinungsbild der Eingabezeile
Das Erscheinungsbild der Chat-Eingabezeile ist anpassbar über ChatInputBarConfiguration.

| Eigenschaft | Beschreibung | Standard |
|---|---|---|
| BackgroundColor3 | Color3 Hintergrundfarbe der Chat-Eingabezeile. | [25, 27, 29] |
| BackgroundTransparency | Transparenz des Hintergrunds der Chat-Eingabezeile. | 0.2 |
| FontFace | Font des Texteingabe im Chat. | BuilderSansMedium |
| PlaceholderColor3 | Color3 des Platzhaltertextes in der Chat-Eingabe. | [178, 178, 178] |
| TextColor3 | Color3 des von Spielern eingegebenen Chattextes. | [255, 255, 255] |
| TextSize | Größe des Chattexteingabefeldes. | 14 |
| TextStrokeColor3 | Color3 Konturfarbe des Chattexteingabfeldes. | [0, 0, 0] |
| TextStrokeTransparency | Transparenz der Kontur für den Text der Eingabe. | 0.5 |
| AutocompleteEnabled | Ob das Text-Chat-System Autovervollständigung für Emojis und Befehle anzeigt. Emojis werden durch Eingabe von : gefolgt von nicht-leeren Zeichen autocompleted, während Befehle durch Eingabe von / autocomplete werden. | true |
| KeyboardKeyCode | Zusätzliche Taste, die Spieler drücken können, um den Fokus auf die Standard-Chat-Eingabezeile zu legen. | Slash |
Erscheinungsbild der Kanaltabs
Das Erscheinungsbild der Kanaltabs ist anpassbar über ChannelTabsConfiguration.

| Eigenschaft | Beschreibung | Standard |
|---|---|---|
| BackgroundColor3 | Color3 Hintergrundfarbe der Kanaltabs. | [25, 27, 29] |
| BackgroundTransparency | Transparenz des Hintergrunds der Kanaltabs. | 0 |
| HoverBackgroundColor3 | Color3 Hintergrundfarbe der Tabs, wenn man darüber fährt. | [125, 125, 125] |
| FontFace | Font für den Text in den Kanaltabs. | BuilderSansBold |
| TextColor3 | Color3 des Textes in einem unselektierten Tab. | [175, 175, 175] |
| SelectedTabTextColor3 | Color3 des Textes in einem ausgewählten Tab. | [255, 255, 255] |
| TextSize | Größe des Textes in den Kanaltabs. | 18 |
| TextStrokeColor3 | Color3 Konturfarbe des Textes in den Kanaltabs. | [0, 0, 0] |
| TextStrokeTransparency | Transparenz der Kontur für den Text in den Kanaltabs. | 1 |
Nachrichten anpassen
Sie können das Erscheinungsbild von Chatnachrichtentexten und -präfixen mithilfe von ChatWindowMessageProperties und TextChatService.OnChatWindowAdded-Callbacks anpassen, ohne die vorhandene Benutzeroberfläche zu überschreiben. Die Anpassungsoptionen ermöglichen es Ihnen, das Erscheinungsbild von Chatnachrichten an das Thema Ihres Spiels anzupassen. Sie können auch Nachrichten aus verschiedenen Benutzergruppen sortieren oder hervorheben, indem Sie Präfixe einfärben oder Chat-Tags hinzufügen.
Benutzerfarben anpassen
Wenn ein Benutzer eine Chatnachricht sendet, wird deren DisplayName als Präfix der Nachricht angezeigt. Standardmäßig ist der Name jedes Benutzers entsprechend seinem Player.TeamColor eingefärbt, aber Sie können die Farben der Chatnamen mithilfe von ChatWindowMessageProperties und OnChatWindowAdded ändern. Das folgende LocalScript in StarterPlayerScripts weist jedem Benutzer eine vorgegebene Farbe zu, die zufällig aus einer Tabelle von RGB-Farben ausgewählt wird.

LocalScript - Zufällige Benutzernamenfarben
local TextChatService = game:GetService("TextChatService")
local chatWindowConfiguration = TextChatService.ChatWindowConfiguration
local nameColors = {
Color3.fromRGB(255, 0, 0),
Color3.fromRGB(0, 255, 0),
Color3.fromRGB(0, 0, 255),
Color3.fromRGB(255, 255, 0),
}
TextChatService.OnChatWindowAdded = function(message: TextChatMessage)
local properties = chatWindowConfiguration:DeriveNewMessageProperties()
local textSource = message.TextSource
if textSource then
local index: number = (textSource.UserId % #nameColors) + 1
local randomColor: Color3 = nameColors[index]
properties.PrefixTextProperties = chatWindowConfiguration:DeriveNewMessageProperties()
properties.PrefixTextProperties.TextColor3 = randomColor
end
return properties
end
Sie können auch Farb- und Transparenzverläufe auf die Präfixe von Nachrichten anwenden, indem Sie UIGradient verwenden.

Gradient-Benutzernamenfarben
local TextChatService = game:GetService("TextChatService")
local chatWindowConfiguration = TextChatService.ChatWindowConfiguration
local gradient = Instance.new("UIGradient")
gradient.Color = ColorSequence.new{
ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 0, 0)),
ColorSequenceKeypoint.new(0.5, Color3.fromRGB(255, 255, 0)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 0, 255))
}
TextChatService.OnChatWindowAdded = function(message: TextChatMessage)
local properties = chatWindowConfiguration:DeriveNewMessageProperties()
local textSource = message.TextSource
if textSource then
properties.PrefixTextProperties = chatWindowConfiguration:DeriveNewMessageProperties()
gradient:Clone().Parent = properties.PrefixTextProperties
end
return properties
end
Anpassung von Rich-Text
Rich-Text Schriftfarb-Tags können verwendet werden, um Chatnachrichten zu formatieren, was hilfreich ist, wenn Sie spezifische Teile der Nachricht formatieren möchten. Beachten Sie, dass Rich-Text keine Verläufe unterstützt, aber das folgende Codebeispiel zeigt, wie Sie den Benutzernamen (gespeichert in TextChatMessage.PrefixText) in den Nachrichtentext verschieben und anschließend Rich-Text-Tags nur auf den Namen anwenden können.

Rich-Text-Anpassung
local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
local chatWindowConfiguration = TextChatService.ChatWindowConfiguration
local gradient = Instance.new("UIGradient")
gradient.Color = ColorSequence.new{
ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 0, 0)),
ColorSequenceKeypoint.new(0.5, Color3.fromRGB(255, 255, 0)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 0, 255))
}
TextChatService.OnChatWindowAdded = function(message: TextChatMessage)
local properties = chatWindowConfiguration:DeriveNewMessageProperties()
if message.TextSource then
properties.PrefixText = "[VIP]"
properties.Text = string.format("<font color='#00ffff'>%s</font>", message.PrefixText) .. " " .. message.Text
properties.PrefixTextProperties = chatWindowConfiguration:DeriveNewMessageProperties()
gradient:Clone().Parent = properties.PrefixTextProperties
end
return properties
end
Nachrichten von Nicht-Spieler-Quellen
Wenn TextChatService.CreateDefaultTextChannels auf true gesetzt ist, ist einer der Standard-Textkanäle der RBXSystem-Kanal. Die Standard-Chat-Skripte zeigen automatisch Systemnachrichten in diesem Kanal an. Sie können das Erscheinungsbild dieser Nachrichten über den TextChannel.OnIncomingMessage-Callback anpassen.
Möglicherweise möchten Sie die Systemnachrichten anpassen oder ändern, die automatisch vom Chat-System ausgegeben werden. Da die Standard-Systemnachrichten lokalisiert für Benutzer sind, sollten Sie sie in Ihren Textchat-Callbacks über TextChatMessage.Metadata ansprechen, wenn Sie deren Erscheinungsbild anpassen möchten. Beispielsweise könnten Sie Metadata verwenden, um Systemnachrichten, Fehlermeldungen oder Nachrichten von bestimmten Systemen in Ihrem Spiel zu identifizieren.
System
Um eine Systemnachricht an den lokalen Spieler zu übermitteln, wie "Ansage" von einem öffentlichen Adresssystem, rufen Sie DisplaySystemMessage() vom Standard-RBXGeneral-Kanal mit einem Präfix vor dem Anzeigenamen des Spielers auf.
Client Scriptlocal Players = game:GetService("Players")local TextChatService = game:GetService("TextChatService")local player = Players.LocalPlayerlocal generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGenerallocal PREFIX = "[Guide] Willkommen "-- "Systemnachricht" an Spieler mit ihrem Anzeigenamen angehängt sendengeneralChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)

NPC/Objekt
Sie können auch Dialoge von Nicht-Spielern gestalten und Chatblasen hinzufügen, um den Eindruck zu erwecken, dass Nachrichten von einem NPC oder Objekt innerhalb der 3D-Welt stammen.
Client Script
local TextChatService = game:GetService("TextChatService")
local Workspace = game:GetService("Workspace")
local generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral
TextChatService.OnIncomingMessage = function(textChatMessage: TextChatMessage)
local properties = Instance.new("TextChatMessageProperties")
-- Überprüfen auf Systemnachrichten, die Metadaten enthalten
if not textChatMessage.TextSource and textChatMessage.Metadata ~= "" then
-- Präfix hinzufügen, um die Nachricht wie von einem Spieler gesendet aussehen zu lassen
properties.PrefixText = string.format("<font color='#%s'>%s: </font>", "#50C999", textChatMessage.Metadata)
-- Bubble-Chat hinzufügen
TextChatService:DisplayBubble(Workspace.Statue, textChatMessage.Text)
end
return properties
end
local message = "Willkommen! Ich werde Ihr Führer sein."
local speakerName = "Alter Ritter"
generalChannel:DisplaySystemMessage(message, speakerName)
