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 Scriptingein- 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 Eigenschaftendes Kanals entspricht Name.
Kanal | Tabsname |
---|---|
RBXGeneral | Allgemein |
RBXSystem | Allgemein (kombiniert in einer einzigen Registerkarte mit RBXGeneral ) |
RBXTeam | Mannschaft |
RBXWhisper | Benutzername des anderen Spieler:in |
Aussehen
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 Erlebniszu 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
Sende Nachrichten von nicht-spielerischen Quellen
Manchmal möchten Sie möglicherweise den Nicht-Spieler-Dialog im Chat-Fenster anzeigen, z. B. "Sprache" aus einem öffentlichen Adresssystem oder einem Nicht-Spieler-Charakter.
System
Um eine Systemnachricht an den lokalen Spieler:inzu senden, rufen Sie DisplaySystemMessage() aus dem Standardkanal RBXGeneral mit einem Präfix vor dem Display-Namen des Spieler:inauf.
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 "Nachricht" an Spieler mit ihrem Displaynamen angehängtgeneralChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)

Für einen detaillierteren Leitfaden zur Anpassung des Aussehens von Systemnachrichten siehe Anpassung von Systemnachrichten.
Standard systemnachrichten
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 Callbackverwendest.
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.
Im Folgenden ist eine Referenz der Standard-Systemnachrichten, die vom Chat-System emittiert werden:
Metadaten | Beschreibung |
---|---|
Roblox.ChatTranslation.ChatWindow.Systemnachricht | Weist darauf hin, dass das System Chatnachrichten für den Spieler übersetzen kann |
Roblox.Notification.Friend.Geschlossen | Wird angezeigt, wenn einer der Freunde des Spielers der Erlebnisbeitritt |
Roblox.MessageStatus.Warnung.Floodchecked | Angezeigt, wenn die vom Spieler gesendete TextChatMessage durch den Server mit einer Rate begrenzt wurde |
Roblox.MessageStatus.Warnung.Textfilterfehler | Angezeigt, wenn die gesendete TextChatMessage des Spielers aufgrund eines Textfilterproblems nicht angezeigt werden konnte |
Roblox.MessageStatus.Warnung.Unzulässige Privatsphäre-Einstellungen | Angezeigt, wenn die Privatsphäre-Einstellungen des Spielers sie verhindern, eine TextChatMessage zu senden |
Roblox.MessageStatus.Warnung.Nachricht zu lang | Wird angezeigt, wenn der Spieler eine TextChatMessage mit Inhalt sendet, der zu lang ist |
Roblox.MessageStatus.Warnung.Unbekannt | Wird angezeigt, wenn das System die TextChatMessage des Spielers aus einem unbekannten Grund nicht senden kann |
Roblox.Help.Informationen | Zeigt die Antwort vom RBXHelpCommand TextChatCommand an |
Roblox.Version.Information | Zeigt die Antwort vom RBXVersionCommand TextChatCommand an |
Roblox.Team.Success.Jetzt im Team | Angezeigt, wenn sich das Team des Spielers ändert |
Roblox.Team.Error.CannotTeamChatWenn nicht im Team | Angezeigt, wenn der Spieler den RBXTeamCommand TextChatCommand auslöst, ohne auf einer Team |
Roblox.Whisper.Info.Erfolg | Wird angezeigt, wenn der Spieler eine Whisper-Konversation erfolgreich startet |
Roblox.Whisper.Welcome.Gesendet | Wird angezeigt, wenn ein Whisper-Textkanal betreten wird |
Roblox.Whisper.Error.Kann nicht zu sich selbst flüstern | Eine Fehlerantwort vom RBXWhisperCommand TextChatCommand |
Roblox.Whisper.Error.Ziel existiert nicht | Eine Fehlerantwort vom RBXWhisperCommand TextChatCommand |
Roblox.Whisper.Error.Zu viele Matches | Eine Fehlerantwort vom RBXWhisperCommand TextChatCommand |
Roblox.Whisper.Error.Unbekannt | Eine Fehlerantwort vom RBXWhisperCommand TextChatCommand |
Roblox.Emote.Error.ExistiertNicht | Eine Fehlerantwort vom RBXEmoteCommand TextChatCommand |
Roblox.Emote.Error.UserEmotesNicht aktiviert | Eine Fehlerantwort vom RBXEmoteCommand TextChatCommand |
Roblox.Emote.Error.Temporär nicht verfügbar | Eine Fehlerantwort vom RBXEmoteCommand TextChatCommand |
Roblox.Emote.Error.Nicht unterstützt | Eine Fehlerantwort vom RBXEmoteCommand TextChatCommand |
Roblox.Emote.Error.Wechseln zu R15 | Eine Fehlerantwort vom RBXEmoteCommand TextChatCommand |
Roblox.Emote.Error.AnimationSpielen | Eine Fehlerantwort vom RBXEmoteCommand TextChatCommand |
Roblox.Mute.Error.PlayerUnknown gefunden | Eine Fehlerantwort vom RBXMuteCommand TextChatCommand |
Roblox.Mute.Error.Multiplikationsmatchen | Eine Fehlerantwort vom RBXMuteCommand TextChatCommand |
Roblox.Mute.Error.Kann nicht stumm sein | Eine Fehlerantwort vom RBXMuteCommand TextChatCommand |
Roblox.Mute.Info.Erfolg | Eine Erfolgantwort vom RBXMuteCommand TextChatCommand |
Roblox.Unmute.Error.PlayerUnicode nicht gefunden | Eine Fehlerantwort vom RBXUnmuteCommand TextChatCommand |
Roblox.Unmute.Error.Multiplikationsspiele | Eine Fehlerantwort vom RBXUnmuteCommand TextChatCommand |
Roblox.Unmute.Error.Kann nicht stummgeschaltet werden | Eine Fehlerantwort vom RBXUnmuteCommand TextChatCommand |
Roblox.Unmute.Info.Erfolg | Eine Erfolgantwort vom RBXUnmuteCommand TextChatCommand |
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:ingesendet
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)
