Passe das Chat-Fenster an

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

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)
Core components of the text chat window.

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.

KanalTabsname
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.

ChatWindowConfiguration instance in Explorer hierarchy.
EigenschaftBeschreibungStandardmäßig
BackgroundColor3Color3 hintergrundfarbe des chat-fensters.[25, 27, 29]
BackgroundTransparencyTransparenz des Hintergrunds des Chat-Fensters.0.3
FontFaceFont des chat-fenstertextes.BuilderSansMedium
TextColor3Color3 des chat-fenstertextes.[255, 255, 255]
TextSizeGröße des Chat-Fenstertextes.14
TextStrokeColor3Color3 des strichs für den chat-fenstertext.[0, 0, 0]
TextStrokeTransparencyTransparenz des Strichs für den Text des Chat-Fensters.0.5
HorizontalAlignmentHorizontale Ausrichtung des Chat-Fensters.Left
VerticalAlignmentVertikale Ausrichtung des Chat-Fensters.Top
HeightScaleHöhenskala des Chat-Fensters im Verhältnis zur Bildschirmgröße.1
WidthScaleBreiten skala des chat-fensters im verhältnis zur bildschirmgröße.1

Auswahlleiste-Aussehen

Das Aussehen der Chat-Eingabeleiste ist anpassbar durch ChatInputBarConfiguration.

ChatInputBarConfiguration instance in Explorer hierarchy.
EigenschaftBeschreibungStandardmäßig
BackgroundColor3Color3 hintergrundfarbe der chat-eingabeleiste.[25, 27, 29]
BackgroundTransparencyTransparenz des Hintergrunds der Chat-Eingabeleiste.0.2
FontFaceFont des chat-eingabetextes.BuilderSansMedium
PlaceholderColor3Color3 des platzhalter-chat-eingabetextes.[178, 178, 178]
TextColor3Color3 des vom spieler eingegebenen chat-eingabetextes.[255, 255, 255]
TextSizeGröße des Chat-Eingabetextes.14
TextStrokeColor3Color3 strichfarbe des chat-eingabetextes.[0, 0, 0]
TextStrokeTransparencyTransparenz des Strichs für den Chat-Eingabetext.0.5
AutocompleteEnabledOb 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
KeyboardKeyCodeZusä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.

ChannelTabsConfiguration instance in Explorer hierarchy.
EigenschaftBeschreibungStandardmäßig
BackgroundColor3Color3 hintergrundfarbe der kanal-tabs.[25, 27, 29]
BackgroundTransparencyTransparenz des Hintergrunds der Kanal-Registerkarten.0
HoverBackgroundColor3Color3 hintergrundfarbe der tabs, wenn sie mit der maus überfahren werden.[125, 125, 125]
FontFaceFont für den text in den kanal-tabs.BuilderSansBold
TextColor3Color3 von text in einem nicht ausgewählten tab.[175, 175, 175]
SelectedTabTextColor3Color3 des textes in einem ausgewählten tab.[255, 255, 255]
TextSizeGröße des Textes in Channel-Tabs.18
TextStrokeColor3Color3 strichfarbe des textes in den kanalkarten.[0, 0, 0]
TextStrokeTransparencyTransparenz 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.

Colored user name in the chat window.
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 user name in the chat window.
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.

Rich text customization of user name in the chat window.
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.LocalPlayer
local generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral
local PREFIX = "[Guide] Welcome "
-- Senden Sie "Nachricht" an Spieler mit ihrem Displaynamen angehängt
generalChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)
Image showing a basic system message in the chat window.

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:

MetadatenBeschreibung
Roblox.ChatTranslation.ChatWindow.SystemnachrichtWeist darauf hin, dass das System Chatnachrichten für den Spieler übersetzen kann
Roblox.Notification.Friend.GeschlossenWird angezeigt, wenn einer der Freunde des Spielers der Erlebnisbeitritt
Roblox.MessageStatus.Warnung.FloodcheckedAngezeigt, wenn die vom Spieler gesendete TextChatMessage durch den Server mit einer Rate begrenzt wurde
Roblox.MessageStatus.Warnung.TextfilterfehlerAngezeigt, wenn die gesendete TextChatMessage des Spielers aufgrund eines Textfilterproblems nicht angezeigt werden konnte
Roblox.MessageStatus.Warnung.Unzulässige Privatsphäre-EinstellungenAngezeigt, wenn die Privatsphäre-Einstellungen des Spielers sie verhindern, eine TextChatMessage zu senden
Roblox.MessageStatus.Warnung.Nachricht zu langWird angezeigt, wenn der Spieler eine TextChatMessage mit Inhalt sendet, der zu lang ist
Roblox.MessageStatus.Warnung.UnbekanntWird angezeigt, wenn das System die TextChatMessage des Spielers aus einem unbekannten Grund nicht senden kann
Roblox.Help.InformationenZeigt die Antwort vom RBXHelpCommand TextChatCommand an
Roblox.Version.InformationZeigt die Antwort vom RBXVersionCommand TextChatCommand an
Roblox.Team.Success.Jetzt im TeamAngezeigt, wenn sich das Team des Spielers ändert
Roblox.Team.Error.CannotTeamChatWenn nicht im TeamAngezeigt, wenn der Spieler den RBXTeamCommand TextChatCommand auslöst, ohne auf einer Team
Roblox.Whisper.Info.ErfolgWird angezeigt, wenn der Spieler eine Whisper-Konversation erfolgreich startet
Roblox.Whisper.Welcome.GesendetWird angezeigt, wenn ein Whisper-Textkanal betreten wird
Roblox.Whisper.Error.Kann nicht zu sich selbst flüsternEine Fehlerantwort vom RBXWhisperCommand TextChatCommand
Roblox.Whisper.Error.Ziel existiert nichtEine Fehlerantwort vom RBXWhisperCommand TextChatCommand
Roblox.Whisper.Error.Zu viele MatchesEine Fehlerantwort vom RBXWhisperCommand TextChatCommand
Roblox.Whisper.Error.UnbekanntEine Fehlerantwort vom RBXWhisperCommand TextChatCommand
Roblox.Emote.Error.ExistiertNichtEine Fehlerantwort vom RBXEmoteCommand TextChatCommand
Roblox.Emote.Error.UserEmotesNicht aktiviertEine Fehlerantwort vom RBXEmoteCommand TextChatCommand
Roblox.Emote.Error.Temporär nicht verfügbarEine Fehlerantwort vom RBXEmoteCommand TextChatCommand
Roblox.Emote.Error.Nicht unterstütztEine Fehlerantwort vom RBXEmoteCommand TextChatCommand
Roblox.Emote.Error.Wechseln zu R15Eine Fehlerantwort vom RBXEmoteCommand TextChatCommand
Roblox.Emote.Error.AnimationSpielenEine Fehlerantwort vom RBXEmoteCommand TextChatCommand
Roblox.Mute.Error.PlayerUnknown gefundenEine Fehlerantwort vom RBXMuteCommand TextChatCommand
Roblox.Mute.Error.MultiplikationsmatchenEine Fehlerantwort vom RBXMuteCommand TextChatCommand
Roblox.Mute.Error.Kann nicht stumm seinEine Fehlerantwort vom RBXMuteCommand TextChatCommand
Roblox.Mute.Info.ErfolgEine Erfolgantwort vom RBXMuteCommand TextChatCommand
Roblox.Unmute.Error.PlayerUnicode nicht gefundenEine Fehlerantwort vom RBXUnmuteCommand TextChatCommand
Roblox.Unmute.Error.MultiplikationsspieleEine Fehlerantwort vom RBXUnmuteCommand TextChatCommand
Roblox.Unmute.Error.Kann nicht stummgeschaltet werdenEine Fehlerantwort vom RBXUnmuteCommand TextChatCommand
Roblox.Unmute.Info.ErfolgEine 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)
Image showing a knight statue NPC broadcasting a chat message to the chat window, along with a chat bubble above its head.