テキストチャットのカスタマイズ

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

エクスペリエンスチャットシステムは、TextChatService によって、プレイヤーがライブエクスペリエンスで簡単にコミュニケーションし、交流できます。デフォルトのテキストチャットをサポートするだけでなく、フロントエンドユーザーインターフェースをカスタマイズできます。

チャットウィンドウの構成

全体のチャットウィンドウは、チャットウィンドウ、入力バー、およびオプションのチャンネルタブで構成されています。

Core components of the text chat window.

チャンネルタブはデフォルトで無効になっており、各コンポーネントは Studio またはスクリプトを通じてオン/オフを切り替えることができます:

スタジオの エクスプローラ ウィンドウに直接、 TextChatService ブランチを拡張し、 ChatWindowConfiguration 、 2>Class.ChatInputBarConfiguration2> 、または 5>Class.ChannelTabsConfiguration5> を選択します。その後、 8>Properties

Class.ChannelTabsConfiguration が有効になると、各 デフォルト TextChannel が次の表に示すようにタブに表示されます。さらに、各 1>カスタム1> 4> Class.TextChannel4> は、チャンネルの 7> Class.Instance

デフォルトチャンネルタブ名
RBXGeneral 一般的な項目
RBXSystem 一般 ( RBXGeneral と組み合わせて、単一のタブに掲載)
RBXTeam チーム
RBXWhisper 他のプレイヤーのユーザー名

ウィンドウの外観

全体的な チャットウィンドウ の外観は、ChatWindowConfiguration を通じてカスタマイズ可能です。

ChatWindowConfiguration instance in Explorer hierarchy.
プロパティ説明デフォルト
BackgroundColor3Color3 チャットウィンドウの背景色。[25, 27, 29]
BackgroundTransparencyチャットウィンドウの背景の透明度。0.3
FontFaceFont のチャットウィンドウテキスト。BuilderSansMedium
TextColor3Color3 のチャットウィンドウテキスト。[255, 255, 255]
TextSizeチャットウィンドウのテキストサイズ。14
TextStrokeColor3Color3 のストロークセットのチャットウィンドウテキスト。[0, 0, 0]
TextStrokeTransparencyチャットウィンドウテキストのストロークの透明度。0.5
HorizontalAlignmentチャットウィンドウの横向きに配置する。Left
VerticalAlignmentチャットウィンドウの垂直アラインメント。Top
HeightScaleチャットウィンドウの高さスケールは、画面サイズに対して。1
WidthScale画面サイズに対するチャットウィンドウの幅のスケール。1

インプットバーの見た目

チャットの外観 入力バーChatInputBarConfiguration を通じてカスタマイズ可能です。

ChatInputBarConfiguration instance in Explorer hierarchy.
プロパティ説明デフォルト
BackgroundColor3Color3 チャット入力バーの背景色。[25, 27, 29]
BackgroundTransparencyチャット入力バーの背景の透明度。0.2
FontFaceFont のチャット入力テキスト。BuilderSansMedium
PlaceholderColor3Color3 のプレースホルダーチャット入力テキスト。[178, 178, 178]
TextColor3Color3 のプレイヤーが入力したチャットの入力テキスト。[255, 255, 255]
TextSizeチャット入力テキストのサイズ。14
TextStrokeColor3Color3 チャット入力テキストのストロークララー。[0, 0, 0]
TextStrokeTransparencyチャット入力テキストのストロークの透明度。0.5
AutocompleteEnabledテキストチャットシステムがエモジのオプションと コマンド のオプションを表示するかどうかは、非ホワイトスペース文字を含む : を入力してから、コマンドを入力することでオートコンプリートされます。true
KeyboardKeyCode追加のキープレイヤーは、デフォルトのチャット入力バーにフォーカスするために押すことができます。Slash

チャンネルタブの見た目

チャンネルタブ の外観は、ChannelTabsConfiguration を通じてカスタマイズ可能です。

ChannelTabsConfiguration instance in Explorer hierarchy.
プロパティ説明デフォルト
BackgroundColor3Color3 チャンネルタブの背景色。[25, 27, 29]
BackgroundTransparencyチャンネルタブの背景の透明度。0
HoverBackgroundColor3Color3 タブの上にマウスカーソルを置くと、背景色が変更されます。[125, 125, 125]
FontFaceFont チャンネルタブ内のテキスト。BuilderSansBold
TextColor3Color3 のテキストを選択しないタブ内のテキスト。[175, 175, 175]
SelectedTabTextColor3Color3 のテキストを選択したタブ内のテキスト。[255, 255, 255]
TextSizeチャンネルタブのテキストサイズ。18
TextStrokeColor3Color3 チャンネルタブのテキストのストロークララー。[0, 0, 0]
TextStrokeTransparencyチャンネルタブのテキストに対するストロークの透明度。1

メッセージのカスタマイズ

Class.ChatWindowMessageProperties および TextChatService.OnChatWindowAdded コールバックを使用して、既存の UI をオーバーライドせずにチャットメッセージの外観をカスタマイズできます。カスタマイズオプションは、エクスペリエンスのテーマに合わせてチャットメッセージの

ユーザー名に色付け

ユーザーがチャットメッセージを送信すると、DisplayName

Colored user name in the chat window.
ローカルスクリプト - ランダムなユーザー名の色

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

Class.UIGradient を使用して、色と透明度のグラデーションを使用してメッセージの頭に色を適用できます。

Gradient user name in the chat window.
グラデーションユーザーネームカラー

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

チャットタグを追加する

エク状況ペリエンスに VIP ステータスなどの特別な 属性 を持つユーザーがいる場合は、 チャットタグ をブラックフレームにラップしてユーザーメッセージの前に付けることで

VIP chat tag appended to user name in the chat window.
チャットタグを追加する

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

リッチテキストのカスタマイズ

リッチテキスト フォントカラータグ は、メッセージの内容をフォーマットするのに使用されるリッチテキストタグです。フォーマットを 特定のパーツのメッセージに適用する場合、注意リッチテキストはグラデードをサポートしていませんが、次のコードサンプルで示すよう

Rich text customization of user name in the chat window.
リッチテキストのカスタマイズ

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

プレイヤー以外のソースからメッセージを送信する

特定のデザインシナリオでは、公開アドレスシステムからの「スピーチ」など、プレイヤーでないキャラクターからのチャットウィンドウに非プレイヤーダイアログを表示したい場合があります。

システム

ローカルプレイヤーにスタイル化されていないシステムメッセージを提供するには、デフォルトの Class.TextChannel:DisplaySystemMessage()|DisplaySystemMessage() チャンネルから、プレイヤーのディスプレイ表示名の前に付く Class.TextChannel:DisplaySystemMessage()|DisplaySystemMessage() を呼び出します。

クライアントスクリプト

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 "
-- 「システムメッセージ」をプレイヤーに送信すると、ディスプレイ名を付けた
generalChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)
Image showing a basic system message in the chat window.

NPC/オブジェクト

非プレイヤーダイアログをスタイリッシュにし、チャットバブルを追加して、3D 世界内の NPC またはオブジェクトからメッセージが来ているように見えるようにします。

クライアントスクリプト

local TextChatService = game:GetService("TextChatService")
local generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral
TextChatService.OnIncomingMessage = function(textChatMessage: TextChatMessage)
local properties = Instance.new("TextChatMessageProperties")
-- メタデータを含むシステムメッセージをチェックします
if not textChatMessage.TextSource and textChatMessage.Metadata ~= "" then
-- メッセージをプレイヤーが送信したように見せるためにプレフィックスを追加します
properties.PrefixText = string.format("<font color='#%s'>%s: </font>", "#50C999", textChatMessage.Metadata)
-- バブルチャットを追加
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.