Personnalisation du chat textuel

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Le dans l'expérience text chat système, alimenté par TextChatService, permet aux joueurs de communiquer facilement et socialiser entre eux dans les expériences en direct. En plus de soutenir le chat textuel par défaut, vous pouvez personnaliser l'interface utilisateur frontale.

Configuration de la fenêtre de discussion

La fenêtre de discussion globale se compose de la fenêtre de discussion, d'une barre d'entrée et d'optionaux onglets de canal.

Core components of the text chat window.

Les onglets de canal sont désactivés par défaut et chaque composant peut être basculé sur/off en Studio ou via le scripting :

Directement dans la fenêtre Explorateur de Studio, élargissez la branche TextChatService et sélectionnez ChatWindowConfiguration, 1> Class.ChatInputBarConfiguration1> ou 4> Class.ChannelTabsConfiguration4>. Ensuite, dans la 7> fenêtre propriétés7>, activez ou désactivez le composant.

Lorsque ChannelTabsConfiguration est activé, chaque par défaut TextChannel apparaîtra dans un onglet comme indiqué dans le tableau suivant. En outre, chaque chat (chat privé)4> Class.TextChannel4> créera un onglet correspondant à la propriété 7> Class.Instance.

Channel par défautNom de l'onglet
RBXGeneral Généraliste
Système RBX Général (combiné en une seule rubrique avec RBXGeneral )
Équipe RBX Équipe
RBXWhisper Nom d'utilisateur d'un autre joueur

Apparence de la fenêtre

L'apparence de la fenêtre de discussion globale est personnalisable via ChatWindowConfiguration .

ChatWindowConfiguration instance in Explorer hierarchy.
PropriétéDescriptionPar défaut
BackgroundColor3Color3 couleur de l'arrière-plan de la fenêtre de chat.[25, 27, 29]
BackgroundTransparencyTransparence du fond de la fenêtre de chat.0.3
FontFaceFont de texte de la fenêtre de chat.BuilderSansMedium
TextColor3Color3 de texte de la fenêtre de chat.[255, 255, 255]
TextSizeTaille du texte de la fenêtre de discussion.14
TextStrokeColor3Color3 de la couleur du pinceau pour le texte de la fenêtre de discussion.[0, 0, 0]
TextStrokeTransparencyTransparence du stroke pour texte de la fenêtre de chat.0.5
HorizontalAlignmentAlignement horizontal de la fenêtre de chat.Left
VerticalAlignmentAlignement vertical de la fenêtre de chat.Top
HeightScaleHauteur de l'échelle de la fenêtre de chat par rapport à la taille de l'écran.1
WidthScaleLargeur de l'échelle de la fenêtre de discussion par rapport à la taille de l'écran.1

Apparence de la barre d'entrée

L'apparence de la barre de discussion entrée est personnalisable via ChatInputBarConfiguration .

ChatInputBarConfiguration instance in Explorer hierarchy.
PropriétéDescriptionPar défaut
BackgroundColor3Color3 couleur de l'arrière-plan de la barre d'entrée du chat.[25, 27, 29]
BackgroundTransparencyTransparence du fond de l'entrée de chat.0.2
FontFaceFont de texte d'entrée de chat.BuilderSansMedium
PlaceholderColor3Color3 du texte de chat de placeholder.[178, 178, 178]
TextColor3Color3 du texte d'entrée de chat du joueur.[255, 255, 255]
TextSizeTaille du texte d'entrée de chat.14
TextStrokeColor3Color3 couleur de dessin du texte d'entrée.[0, 0, 0]
TextStrokeTransparencyTransparence du stroke pour le texte d'entrée de chat.0.5
AutocompleteEnabledQue le système de chat textuel affiche des options d'autocomplétion pour les emojis et commandes . Les emojis sont autocomplétés en tapant : suivi de caractères non espacés, tandis que les commandes sont autocomplétées en tapant / .true
KeyboardKeyCodeLes joueurs clés supplémentaires peuvent appuyer pour activer le focus sur la barre d'entrée par défaut.Slash

Apparence des onglets de canal

L'apparence des onglets de canal est personnalisable via ChannelTabsConfiguration .

ChannelTabsConfiguration instance in Explorer hierarchy.
PropriétéDescriptionPar défaut
BackgroundColor3Color3 couleur de l'arrière-plan des onglets de canal.[25, 27, 29]
BackgroundTransparencyTransparence du fond des onglets de canal.0
HoverBackgroundColor3Color3 couleur de l'arrière-plan des onglets lorsque vous passez la souris dessus.[125, 125, 125]
FontFaceFont pour le texte dans les onglets de canal.BuilderSansBold
TextColor3Color3 de texte dans une onglet non sélectionnée.[175, 175, 175]
SelectedTabTextColor3Color3 de texte dans une onglet sélectionné.[255, 255, 255]
TextSizeTaille du texte dans les onglets de canal.18
TextStrokeColor3Color3 couleur de dessin du texte dans les onglets de canal.[0, 0, 0]
TextStrokeTransparencyTransparence du stroke pour le texte dans les onglets de canal.1

Personnalisation des messages

Vous pouvez personnaliser l'apparence des corps de message de chat et des préfixes en utilisant ChatWindowMessageProperties et TextChatService.OnChatWindowAdded appels sans surrider l'interface existante. Les options de personnalisation vous permettent de modifier l'apparence des messages de chat pour correspondre au thème de votre expérience, et vous pouvez également trier ou mettre en évidence les messages des différents groupes d'util

Colorer les noms d'utilisateur

Lorsqu'un utilisateur envoie un message de chat, son DisplayName s'aff

Colored user name in the chat window.
LocalScript - Couleurs de nom d'utilisateur aléatoire

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

Vous pouvez également appliquer des gradients de couleur et de transparence aux préfixes de message de couleur en utilisant UIGradient.

Gradient user name in the chat window.
Couleurs d'utilisateur degradées

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

Ajouter des tags de chat

Si votre expérience a des utilisateurs avec des 属性 spéciaux comme le statut VIP, vous pouvez attacher des balises de discussion encerclées de parenthèses à l'avant des messages d'utilisateur pour mettre en évidence leurs messages. Le suivant LocalScript dans

VIP chat tag appended to user name in the chat window.
Ajouter des tags de chat

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

Personnalisation du texte riche

Les balises de couleur du texte riche peuvent être utilisées pour formater les messages de chat, utiles si vous voulez appliquer la mise en forme à des parties spécifiques du message. Notez que les balises de couleur du texte riche ne supportent pas les gradients, mais l'exemple de code suivant montre comment vous pouvez déplacer le nom de l'utilisateur (sauquel TextChatMessage.PrefixText ) dans le corps du message et ensuite appliquer la

Rich text customization of user name in the chat window.
Personnalisation du texte riche

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

Envoyer des messages à partir des sources non joueur

Dans certains scénarios de conception, vous voudrez peut-être afficher le dialogue non joueur dans la fenêtre de chat, comme "le discours" d'un système d'adresse publique ou d'un personnage non joueur.

Système

Pour livrer un message système non style au joueur local, appelez simplement DisplaySystemMessage() à partir du canal par défaut RBXGeneral avec un préfixe avant le nom d'affichage du joueur.

Script du client

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 "
-- Envoyez un messagedu système » au joueur avec son nom d'affichage apposé
generalChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)
Image showing a basic system message in the chat window.

NPC/Objet

Vous pouvez également styliser le dialogue non-joueur et ajouter bulles de chat pour qu'il semble que les messages viennent d'un PNJ ou d'un objet dans le monde 3D.

Script du client

local TextChatService = game:GetService("TextChatService")
local generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral
TextChatService.OnIncomingMessage = function(textChatMessage: TextChatMessage)
local properties = Instance.new("TextChatMessageProperties")
-- Recherchez des messages système qui contiennent des métadonnées
if not textChatMessage.TextSource and textChatMessage.Metadata ~= "" then
-- Ajoutez un préfixe pour que le message ressemble à ce qu'il a été envoyé par un joueur
properties.PrefixText = string.format("<font color='#%s'>%s: </font>", "#50C999", textChatMessage.Metadata)
-- Ajouter du chat bulle
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.