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.
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éfaut | Nom 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 .
Propriété | Description | Par défaut |
---|---|---|
BackgroundColor3 | Color3 couleur de l'arrière-plan de la fenêtre de chat. | [25, 27, 29] |
BackgroundTransparency | Transparence du fond de la fenêtre de chat. | 0.3 |
FontFace | Font de texte de la fenêtre de chat. | BuilderSansMedium |
TextColor3 | Color3 de texte de la fenêtre de chat. | [255, 255, 255] |
TextSize | Taille du texte de la fenêtre de discussion. | 14 |
TextStrokeColor3 | Color3 de la couleur du pinceau pour le texte de la fenêtre de discussion. | [0, 0, 0] |
TextStrokeTransparency | Transparence du stroke pour texte de la fenêtre de chat. | 0.5 |
HorizontalAlignment | Alignement horizontal de la fenêtre de chat. | Left |
VerticalAlignment | Alignement vertical de la fenêtre de chat. | Top |
HeightScale | Hauteur de l'échelle de la fenêtre de chat par rapport à la taille de l'écran. | 1 |
WidthScale | Largeur 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 .
Propriété | Description | Par défaut |
---|---|---|
BackgroundColor3 | Color3 couleur de l'arrière-plan de la barre d'entrée du chat. | [25, 27, 29] |
BackgroundTransparency | Transparence du fond de l'entrée de chat. | 0.2 |
FontFace | Font de texte d'entrée de chat. | BuilderSansMedium |
PlaceholderColor3 | Color3 du texte de chat de placeholder. | [178, 178, 178] |
TextColor3 | Color3 du texte d'entrée de chat du joueur. | [255, 255, 255] |
TextSize | Taille du texte d'entrée de chat. | 14 |
TextStrokeColor3 | Color3 couleur de dessin du texte d'entrée. | [0, 0, 0] |
TextStrokeTransparency | Transparence du stroke pour le texte d'entrée de chat. | 0.5 |
AutocompleteEnabled | Que 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 |
KeyboardKeyCode | Les 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 .
Propriété | Description | Par défaut |
---|---|---|
BackgroundColor3 | Color3 couleur de l'arrière-plan des onglets de canal. | [25, 27, 29] |
BackgroundTransparency | Transparence du fond des onglets de canal. | 0 |
HoverBackgroundColor3 | Color3 couleur de l'arrière-plan des onglets lorsque vous passez la souris dessus. | [125, 125, 125] |
FontFace | Font pour le texte dans les onglets de canal. | BuilderSansBold |
TextColor3 | Color3 de texte dans une onglet non sélectionnée. | [175, 175, 175] |
SelectedTabTextColor3 | Color3 de texte dans une onglet sélectionné. | [255, 255, 255] |
TextSize | Taille du texte dans les onglets de canal. | 18 |
TextStrokeColor3 | Color3 couleur de dessin du texte dans les onglets de canal. | [0, 0, 0] |
TextStrokeTransparency | Transparence 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
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.
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
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
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.LocalPlayerlocal generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGenerallocal PREFIX = "[Guide] Welcome "-- Envoyez un messagedu système » au joueur avec son nom d'affichage apposégeneralChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)
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)