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

StandardkanalTabsname
RBXGeneral Allgemein
RBXSystem Allgemein (kombiniert in einer einzigen Registerkarte mit RBXGeneral )
RBXTeam Mannschaft
RBXWhisperBenutzername des anderen Spielers

Fensteraussehen

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

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

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

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)
Image showing a knight statue NPC broadcasting a chat message to the chat window, along with a chat bubble above its head.