Das Erlebnistext-Chat-System, betrieben von TextChatService, ermöglicht es Spielern, leicht miteinander zu kommunizieren und sich in Echtzeit-Erlebnissen zu sozialisieren.Zusätzlich zur Unterstützung des Standardtextchats kannst du die Benutzeroberfläche des Frontends anpassen.
Konfiguration des Chatfensters
Das Gesamtfenster des Chats besteht aus:
- Chatten-Fenster
- Eingabefeld
- Kanal-Registerkarten (optional)

Die Kanal-Tabs sind standardmäßig deaktiviert und jede Komponente kann in Studio oder durch Skripte ein- und ausgeschaltet werden:
Im Explorer Fenster erweitern Sie die TextChatService Zweig und wählen Sie ChatWindowConfiguration , ChatInputBarConfiguration oder ChannelTabsConfiguration aus.Dann aktiviere oder deaktiviere die Komponente im Eigenschaften-Fenster.

Wenn ChannelTabsConfiguration aktiviert ist, erscheint jedes Standard-TextChannel in einem Tab wie im folgenden Tabellen beschrieben.Darüber hinaus erstellt jedes benutzerdefinierte TextChannel eine Registerkarte, die der Eigenschaft des Kanals entspricht Name.
Standardkanal | Tabsname |
---|---|
RBXGeneral | Allgemein |
RBXSystem | Allgemein (kombiniert in einer einzigen Registerkarte mit RBXGeneral ) |
RBXTeam | Mannschaft |
RBXWhisper | Benutzername des anderen Spielers |
Fensteraussehen
Das Aussehen des gesamten Chatfensters ist anpassbar durch ChatWindowConfiguration.

Eigenschaft | Beschreibung | Standardmäßig |
---|---|---|
BackgroundColor3 | Color3 hintergrundfarbe des chat-fensters. | [25, 27, 29] |
BackgroundTransparency | Transparenz des Hintergrunds des Chat-Fensters. | 0.3 |
FontFace | Font des chat-fenstertextes. | BuilderSansMedium |
TextColor3 | Color3 des chat-fenstertextes. | [255, 255, 255] |
TextSize | Größe des Chat-Fenstertextes. | 14 |
TextStrokeColor3 | Color3 des strichs für den chat-fenstertext. | [0, 0, 0] |
TextStrokeTransparency | Transparenz des Strichs für den Text des Chat-Fensters. | 0.5 |
HorizontalAlignment | Horizontale Ausrichtung des Chat-Fensters. | Left |
VerticalAlignment | Vertikale Ausrichtung des Chat-Fensters. | Top |
HeightScale | Höhenskala des Chat-Fensters im Verhältnis zur Bildschirmgröße. | 1 |
WidthScale | Breiten skala des chat-fensters im verhältnis zur bildschirmgröße. | 1 |
Auswahlleiste-Aussehen
Das Aussehen der Chat-Eingabeleiste ist anpassbar durch ChatInputBarConfiguration.

Eigenschaft | Beschreibung | Standardmäßig |
---|---|---|
BackgroundColor3 | Color3 hintergrundfarbe der chat-eingabeleiste. | [25, 27, 29] |
BackgroundTransparency | Transparenz des Hintergrunds der Chat-Eingabeleiste. | 0.2 |
FontFace | Font des chat-eingabetextes. | BuilderSansMedium |
PlaceholderColor3 | Color3 des platzhalter-chat-eingabetextes. | [178, 178, 178] |
TextColor3 | Color3 des vom spieler eingegebenen chat-eingabetextes. | [255, 255, 255] |
TextSize | Größe des Chat-Eingabetextes. | 14 |
TextStrokeColor3 | Color3 strichfarbe des chat-eingabetextes. | [0, 0, 0] |
TextStrokeTransparency | Transparenz des Strichs für den Chat-Eingabetext. | 0.5 |
AutocompleteEnabled | Ob das Textchat-System automatische Vervollständigungsoptionen für Emojis und Befehle anzeigt.Emojis werden automatisch abgeschlossen, indem du : folgst von nicht-Leerzeichenzeichen, während Befehle automatisch abgeschlossen werden, indem du / eingibst. | true |
KeyboardKeyCode | Zusätzliche Schlüsselspieler können drücken, um sich auf die Standard-Chat-Eingabeleiste zu fokussieren. | Slash |
Aussehen der Kanal-Tabs
Das Aussehen der Kanal-Tabs ist über ChannelTabsConfiguration.

Eigenschaft | Beschreibung | Standardmäßig |
---|---|---|
BackgroundColor3 | Color3 hintergrundfarbe der kanal-tabs. | [25, 27, 29] |
BackgroundTransparency | Transparenz des Hintergrunds der Kanal-Registerkarten. | 0 |
HoverBackgroundColor3 | Color3 hintergrundfarbe der tabs, wenn sie mit der maus überfahren werden. | [125, 125, 125] |
FontFace | Font für den text in den kanal-tabs. | BuilderSansBold |
TextColor3 | Color3 von text in einem nicht ausgewählten tab. | [175, 175, 175] |
SelectedTabTextColor3 | Color3 des textes in einem ausgewählten tab. | [255, 255, 255] |
TextSize | Größe des Textes in Channel-Tabs. | 18 |
TextStrokeColor3 | Color3 strichfarbe des textes in den kanalkarten. | [0, 0, 0] |
TextStrokeTransparency | Transparenz des Strichs für Text in Kanal-Tabs. | 1 |
Nachrichten anpassen
Du kannst das Aussehen von Chat-Nachrichtenkörpern und Präfixen anpassen, indem du ChatWindowMessageProperties und TextChatService.OnChatWindowAdded Rückrufe verwendest, ohne die bestehende UI zu überschreiben.Die Anpassungsoptionen ermöglichen es Ihnen, das Aussehen von Chat-Nachrichten zu modifizieren, um das Thema Ihrer Erfahrung zu entsprechen, und Sie können auch Nachrichten von verschiedenen Benutzergruppen nach Farbe sortieren oder hervorheben, indem Sie Präfixe färben oder Chat-Tags hinzufügen.
Farbene Benutzernamen
Wenn ein Benutzer eine Chatnachricht sendet, wird seine DisplayName Anzeige als Präfixteil der Nachricht angezeigt.Standardmäßig wird der Name jedes Benutzers nach seinen Player.TeamColor gefärbt, aber du kannst die Farben der Chat-Namen mit ChatWindowMessageProperties und OnChatWindowAdded ändern.Das Folgende LocalScript in StarterPlayerScripts weist jedem Benutzer eine vordefinierte Farbe zu, wählt zufällig aus einer Tabelle mit RGB-Farben.

LocalScript - Zufällige Benutzername-Farben
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
Du kannst auch Farb- und Transparenzgradienten auf Farb-Nachrichtenpräfixe anwenden, indem du UIGradient verwendest.

Gradient-Benutzername-Farben
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
Reiche Textanpassung
Reicher Text Font-Farben-Tags können verwendet werden, um Chatnachrichten zu formatieren, nützlich, wenn Sie die Formatierung auf sehr spezifische Teile der Nachricht anwenden möchten.Beachten Sie, dass reicher Text keine Gradienten unterstützt, aber das folgende Codebeispiel zeigt, wie Sie den Benutzernamen (der in TextChatMessage.PrefixText gespeichert ist) in den Nachrichtenkörper verschieben und dann nur den Namensteil mit reichhaltigen Textmarkierungen versehen können.

Reiche Textanpassung
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-spielerischen Quellen
Wenn TextChatService.CreateDefaultTextChannels ist true , ist einer der Standardtextkanäle der Kanal RBXSystem .Die Standard-Chat-Skripte zeigen automatisch Systemnachrichten in diesem Kanal an.Du kannst das Aussehen dieser Nachrichten anpassen, indem du den TextChannel.OnIncomingMessage Rückruf verwendest.
Vielleicht möchten Sie die Systemnachrichten anpassen oder ändern, die vom Chat-System automatisch emittiert werden.Da die Standard-Systemnachrichten für Benutzer lokalisiert sind, solltest du sie mit TextChatMessage.Metadata in deinen Text-Chat-Anrufen referenzieren, wenn du ihr Aussehen anpassen möchtest.Zum Beispiel könnten Sie Metadata verwenden, um Systemnachrichten, Fehlernachrichten oder Nachrichten von bestimmten Systemen in Ihrer Erfahrung zu identifizieren.
System
Um eine Systemnachricht an den lokalen Spieler zu senden, wie z. B. "Sprache" aus einem öffentlichen Adresssystem, rufe vom Standardkanal mit einem Präfix vor dem Display-Namen des Spielers an.
Client-Skript
local Players = game:GetService("Players")local TextChatService = game:GetService("TextChatService")local player = Players.LocalPlayerlocal generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGenerallocal PREFIX = "[Guide] Welcome "-- Senden Sie "Systemnachricht" an Spieler mit ihrem Displaynamen angehängtgeneralChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)

NPC/Objekt
Du kannst auch den nicht-spielerischen Dialog stylen und Chat-Blasen hinzufügen, um zu vermitteln, dass Nachrichten von einem NPC oder einem Objekt innerhalb der 3D-Welt kommen.
Client-Skript
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 Sie Systemnachrichten, die Metadaten enthalten
if not textChatMessage.TextSource and textChatMessage.Metadata ~= "" then
-- Präfix hinzufügen, um die Nachricht so aussehen zu lassen, als wäre sie von einem Spieler gesendet
properties.PrefixText = string.format("<font color='#%s'>%s: </font>", "#50C999", textChatMessage.Metadata)
-- Blasenchat hinzufügen
TextChatService:DisplayBubble(Workspace.Statue, textChatMessage.Text)
end
return properties
end
local message = "Welcome! I will be your guide."
local speakerName = "Ancient Knight"
generalChannel:DisplaySystemMessage(message, speakerName)
