Die In-Experience-Textchat -System, angetrieben von TextChatService, ermöglicht es Spielern, miteinander in Live-Erlebnissen leicht zu kommunizieren und zu sozialisieren. Zusätzlich zu der Unterstützung des Standardtextchats können Sie die Frontend-Benutzeroberfläche anpassen.
Chat-Fenster-Konfiguration
Das Gesamtkontextfenster besteht aus dem Chat-Fenster, einer Eingabeleiste und optionalen Kanal-Tabellen.
Die Kanal-Tabs sind standardmäßig deaktiviert und jedes Komponente kann in Studio oder durch Scriptingein/ausgeschaltet werden:
Direkt im Studio-Fenster Explorer , erweitern Sie die TextChatService -Verzweigung und wählen Sie ChatWindowConfiguration , 1> Class.ChatInputBarConfiguration1> oder 4> Class.ChannelTabsConfiguration4> . Dann, in dem 7>Eigenschaften7>-Fenster, akt
Wenn ChannelTabsConfiguration aktiviert ist, wird jedes Standard TextChannel in einem Tab erscheinen, wie in der folgenden Tabelle beschrieben. Darüber hinaus erstellt jedes 1>benutzerdefinierte1> 4> Class.TextChannel4> einen Tab, der der Eigenschaft 7>Name|Name
Standard-Kanal | Tab-Name |
---|---|
RBXGeneral | Allgemein |
RBXSystem | Allgemein (kombiniert in einer einzigen Registerkarte mit RBXGeneral ) |
RBXTeam | Team |
RBXWhisper | Benutzername eines anderen Spieler:in |
Fenster-Aussehen
Das Aussehen des gesamten Chat-Fensters ist über ChatWindowConfiguration anpassbar.
Eigenschaft | Beschreibung | Standard |
---|---|---|
BackgroundColor3 | Color3 Hintergrundfarbe des Chat-Fensters. | [25, 27, 29] |
BackgroundTransparency | Transparenz des Hintergrunds des Chat-Fensters. | 0.3 |
FontFace | Font des Chat-Fenster-Texts. | BuilderSansMedium |
TextColor3 | Color3 des Chat-Fenster-Texts. | [255, 255, 255] |
TextSize | Größe des Chat-Fenstertexts. | 14 |
TextStrokeColor3 | Color3 des Stocks für den Chat-Fenster-Text. | [0, 0, 0] |
TextStrokeTransparency | Transparenz des Stocks für den Chat-Fenster-Text. | 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 zu der Bildschirmdimension. | 1 |
WidthScale | Breitenmaßstab des Chat-Fensters im Verhältnis zu der Bildschirmdimension. | 1 |
Aussehen der Eingabeleiste
Die Chat-Ansicht Eingabe-Bar ist über ChatInputBarConfiguration anpassbar.
Eigenschaft | Beschreibung | Standard |
---|---|---|
BackgroundColor3 | Color3 Hintergrundfarbe der Chat-Eingabefelder. | [25, 27, 29] |
BackgroundTransparency | Transparenz des Hintergrunds der Chat-Eingabeleiste. | 0.2 |
FontFace | Font des Chat-Eingabentexts. | BuilderSansMedium |
PlaceholderColor3 | Color3 der Platzhalter-Chat-Eingabentext. | [178, 178, 178] |
TextColor3 | Color3 des eingegebenen Chat-Texts des Spielers. | [255, 255, 255] |
TextSize | Größe des Chat-Eingabetexts. | 14 |
TextStrokeColor3 | Color3 Strokes Farbe des Chat-Eingangstexts. | [0, 0, 0] |
TextStrokeTransparency | Transparenz des Strokes für Chat-Eingabentext. | 0.5 |
AutocompleteEnabled | Ob das Text-Chat-System Autovervollständigungsoptionen für Emojis und Befehle anzeigt. Emojis werden durch das Schreiben von : Folgend von nicht-Whitespace-Zeichen autovervollständigt, während Befehle durch das Schreiben von / autovervollständigt werden. | true |
KeyboardKeyCode | Zusätzliche Schlüsselspieler können drücken, um sich auf die Standard-Chat-Eingabeleiste zu konzentrieren. | Slash |
Kanal-Tab-Aussehen
Das Aussehen der Kanal-Tabs ist über ChannelTabsConfiguration anpassbar.
Eigenschaft | Beschreibung | Standard |
---|---|---|
BackgroundColor3 | Color3 Hintergrundfarbe der Kanal-Tabs. | [25, 27, 29] |
BackgroundTransparency | Transparenz der Hintergrund der Kanal-Tabs. | 0 |
HoverBackgroundColor3 | Color3 Hintergrundfarbe der Tabs, wenn mit dem Cursor über sie gesetzt wird. | [125, 125, 125] |
FontFace | Font für den Text in den Kanal-Tabellen. | BuilderSansBold |
TextColor3 | Color3 Text in einem nicht ausgewählten Tab. | [175, 175, 175] |
SelectedTabTextColor3 | Color3 Text in einer ausgewählten Registerkarte. | [255, 255, 255] |
TextSize | Größe des Textes in den Kanall-Tabs. | 18 |
TextStrokeColor3 | Color3 Textfarbe des Textes in den Kanal-Taben. | [0, 0, 0] |
TextStrokeTransparency | Transparenz der Stroke für Text in den Kanal-Tabs. | 1 |
Nachrichten anpassen
Du kannst die Aussehen von Chat-Nachrichten und Präfixen anpassen, indem du ChatWindowMessageProperties und TextChatService.OnChatWindowAdded-Callbacks verwendest, ohne die bestehende UI zu überschreiben. Die Anpassungsmöglichkeiten ermöglichen es dir, die Aussehen von Chat-Nachrichten anzupassen, um das Thema deines Erlebnisses zu entsprechen, und du
Benutzernamen färben
Wenn ein Benutzer eine Chat-Nachricht sendet, wird seine DisplayName als P
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 Transparenzgrade für Farb-Nachrichten verwenden, indem du UIGradient verwendest.
Farben für den Benutzernamen
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
Chat-Tags hinzufügen
Wenn deine Erfahrung Benutzer mit speziellen Attributen wie VIP-Status anbietet, kannst du Chat-Tags mit Chat-Tags in Klammern an die Front von Benutzer-Nachrichten anbringen, um ihre Nachrichten hervorzuheben. Das folgende Class.Local
Chat-Tags anhängen
local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
local chatWindowConfiguration = TextChatService.ChatWindowConfiguration
TextChatService.OnChatWindowAdded = function(message: TextChatMessage)
local properties = chatWindowConfiguration:DeriveNewMessageProperties()
if message.TextSource then
local player = Players:GetPlayerByUserId(message.TextSource.UserId)
if player:GetAttribute("IsVIP") then
properties.PrefixText = "[VIP] " .. message.PrefixText
properties.PrefixTextProperties = chatWindowConfiguration:DeriveNewMessageProperties()
properties.PrefixTextProperties.TextColor3 = Color3.fromRGB(255, 125, 50)
end
end
return properties
end
Reicher Text-Anpassung
Reicher Text Zeichenfarben-Tags können verwendet werden, um Chat-Nachrichtungen zu formatieren, hilfreich, wenn Sie Formulierung auf sehr spezifische Teile der Nachricht anwenden möchten. Beachten Sie, dass Richer Text keine Gradienten unterstützt, aber die folgende Codebeispiel zeigt, wie Sie den Benutzernamen (in TextChatMessage.PrefixText gespeichert) in den Nachrichtenkörper verschieben und dann Rich
Reicher 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-Player-Quellen senden
In bestimmten Design-Szenarien möchten Sie vielleicht den nicht-player-Dialog im Chat-Fenster anzeigen, z. B. "Sprech" von einem öffentlichen Adress-System oder einem nicht-player-Charakter.
System
Um eine unstylish-Systemnachricht an den lokalen Spieler:inzu liefern, rufe einfach DisplaySystemMessage() vom Standard- RBXGeneral -Kanal mit einem Präfix vor dem Displaynamen des Spieler:in.
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 "system Nachricht" an den Spieler mit ihrem Displaynamen appendedgeneralChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)
NPC/Objekt
Du kannst auch den nicht-player-Dialog stilieren und Chat-Blasen hinzufügen, um es so aussehen zu lassen, als würden Nachrichten von einem NPC oder einem Objekt innerhalb der 3D-Welt gesendet.
Client-Skript
local TextChatService = game:GetService("TextChatService")
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
-- Füge einen Präfix hinzu, um die Nachricht so auszusehen, als würde sie von einem Spieler:ingesendet
properties.PrefixText = string.format("<font color='#%s'>%s: </font>", "#50C999", textChatMessage.Metadata)
-- Blasen-Chat 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)