Tùy chỉnh cửa sổ trò chuyện

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Hệ thống trò chuyện văn bản trong kinh nghiệm có sức mạnh bởi , cho phép người chơi dễ dàng giao tiếp và giao lưu với nhau trong các trải nghiệm trực tiếp.Ngoài việc hỗ trợ trò chuyện văn bản mặc định, bạn có thể tùy chỉnh giao diện người dùng bên trước.

Cài đặt cửa sổ trò chuyện

Cửa sổ trò chuyện tổng thể bao gồm:

  • Cửa sổ chat
  • Thanh nhập
  • Tab kênh (tùy chọn)
Core components of the text chat window.

Các tab kênh bị vô hiệu hóa mặc định và mỗi thành phần có thể bật và tắt trong Studio hoặc thông qua lập trình:

Trong cửa sổ Explorer, mở rộng cành TextChatService và chọn ChatWindowConfiguration , ChatInputBarConfiguration hoặc ChannelTabsConfiguration .Sau đó bật hoặc tắt thành phần trong cửa sổ Tính năng.

Khi ChannelTabsConfiguration được bật, mỗi mặc định TextChannel xuất hiện trong một tab như được mô tả trong bảng sau.Ngoài ra, mỗi tùy chỉnh TextChannel tạo một tab tương ứng với thuộc tính kênh Name của nó.

Kênh mặc địnhTên tab
RBXGeneral Tổng quát
RBXSystem Tổng quát (được kết hợp thành một tab duy nhất với RBXGeneral )
RBXTeam Đội
RBXWhisperTên người dùng của người chơi kia

Xuất hiện cửa sổ

Ngoại hình của cửa sổ trò chuyện tổng thể có thể tùy chỉnh thông qua ChatWindowConfiguration .

ChatWindowConfiguration instance in Explorer hierarchy.
Tài sảnMô tảMặc định
BackgroundColor3Color3 màu nền của cửa sổ trò chuyện.[25, 27, 29]
BackgroundTransparencySự minh bạch của nền của cửa sổ trò chuyện.0.3
FontFaceFont của văn bản cửa sổ trò chuyện.BuilderSansMedium
TextColor3Color3 của văn bản cửa sổ trò chuyện.[255, 255, 255]
TextSizeKích thước văn bản của cửa sổ trò chuyện.14
TextStrokeColor3Color3 của đường nét cho văn bản cửa sổ trò chuyện.[0, 0, 0]
TextStrokeTransparencyĐộ trong suốt của đường nét cho văn bản cửa sổ trò chuyện.0.5
HorizontalAlignmentSắp xếp ngang của cửa sổ trò chuyện.Left
VerticalAlignmentChỉnh sắp dọc của cửa sổ trò chuyện.Top
HeightScaleTỉ lệ chiều cao của cửa sổ trò chuyện so với kích thước màn hình.1
WidthScaleTỉ lệ chiều rộng của cửa sổ trò chuyện so với kích thước màn hình.1

Xuất hiện thanh nhập

Trang phục của thanh nhập trò chuyện có thể tùy chỉnh thông qua ChatInputBarConfiguration .

ChatInputBarConfiguration instance in Explorer hierarchy.
Tài sảnMô tảMặc định
BackgroundColor3Color3 màu nền của thanh nhập trò chuyện.[25, 27, 29]
BackgroundTransparencySự minh bạch của nền của thanh nhập trò chuyện.0.2
FontFaceFont của văn bản nhập trò chuyện.BuilderSansMedium
PlaceholderColor3Color3 của văn bản nhập chat giả mạo.[178, 178, 178]
TextColor3Color3 của văn bản nhập trò chuyện do người chơi nhập.[255, 255, 255]
TextSizeKích thước của văn bản nhập trò chuyện.14
TextStrokeColor3Color3 màu đường viền của văn bản nhập trò chuyện.[0, 0, 0]
TextStrokeTransparencyĐộ trong suốt của đường nét cho văn bản nhập trò chuyện.0.5
AutocompleteEnabledLiệu hệ thống trò chuyện văn bản có hiển thị tùy chọn hoàn thành tự động cho các emoji và lệnh.Biểu tượng cảm xúc được hoàn thành tự động bằng cách gõ : theo sau là các ký tự không phải khoảng trống, trong khi các lệnh được hoàn thành tự động bằng cách gõ / .true
KeyboardKeyCodeCác người chơi chính phụ có thể nhấn để kích hoạt tập trung vào thanh nhập trò chuyện mặc định.Slash

Xuất hiện tab kênh

Ngoại hình của các tab kênh có thể tùy chỉnh thông qua .

ChannelTabsConfiguration instance in Explorer hierarchy.
Tài sảnMô tảMặc định
BackgroundColor3Color3 màu nền của các tab kênh.[25, 27, 29]
BackgroundTransparencySự minh bạch của nền của các tab kênh.0
HoverBackgroundColor3Color3 màu nền của tab khi di chuột qua chúng.[125, 125, 125]
FontFaceFont cho văn bản trong tab kênh.BuilderSansBold
TextColor3Color3 của văn bản trong một tab chưa được chọn.[175, 175, 175]
SelectedTabTextColor3Color3 của văn bản trong một tab được chọn.[255, 255, 255]
TextSizeKích thước của văn bản trong tab kênh.18
TextStrokeColor3Color3 màu đường viền của văn bản trong tab kênh.[0, 0, 0]
TextStrokeTransparencyĐộ trong suốt của đường nét cho văn bản trong tab kênh.1

Tùy chỉnh tin nhắn

Bạn có thể tùy chỉnh sự xuất hiện của các thân tin nhắn trò chuyện và tiền tố bằng cách sử dụng ChatWindowMessagePropertiesTextChatService.OnChatWindowAdded cuộc gọi trả lại mà không làm thay đổi giao diện người dùng hiện tại.Các tùy chọn tùy chỉnh cho phép bạn thay đổi sự xuất hiện của tin nhắn trò chuyện để phù hợp với chủ đề kinh nghiệm của bạn, và bạn cũng có thể sắp xếp hoặc làm nổi bật tin nhắn từ các nhóm người dùng khác nhau bằng cách đánh dấu chữ đầu hoặc thêm thẻ trò chuyện .

Tên người dùng màu

Khi một người dùng gửi tin nhắn trò chuyện, phần tiền tố của tin nhắn được hiển thị như phần tiền tố của tin nhắn.Mặc định, tên của mỗi người dùng được đánh màu theo tên của họ Player.TeamColor nhưng bạn có thể thay đổi màu sắc của tên trò chuyện bằng cách sử dụng ChatWindowMessagePropertiesOnChatWindowAdded .Các thẻ sau LocalScript trong StarterPlayerScripts gán một màu đã định trước cho mỗi người dùng, lựa chọn ngẫu nhiên từ một bảng màu RGB.

Colored user name in the chat window.
LocalScript - Tên người dùng ngẫu nhiên màu sắc

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

Bạn cũng có thể áp dụng độ mờ và độ mờ màu cho tiền tố của tin nhắn màu bằng cách sử dụng UIGradient .

Gradient user name in the chat window.
Màu tên người dùng tuyến tính

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

Tùy chỉnh văn bản giàu

Rich text nhãn màu phông chữ có thể được sử dụng để định dạng tin nhắn trò chuyện, hữu ích nếu bạn muốn áp dụng định dạng cho các phần rất cụ thể của tin nhắn.Lưu ý rằng văn bản giàu không hỗ trợ độ mờ, nhưng ví dụ mã sau đây cho thấy cách bạn có thể di chuyển tên người dùng (được lưu trong TextChatMessage.PrefixText ) vào cơ thể tin nhắn và sau đó áp dụng thẻ phân loại văn bản giàu chỉ cho phần tên.

Rich text customization of user name in the chat window.
Tùy chỉnh văn bản giàu

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

Tin nhắn từ nguồn không phải người chơi

Khi TextChatService.CreateDefaultTextChannelstrue, một trong những kênh văn bản mặc định là kênh RBXSystem.Các kịch bản trò chuyện mặc định hiển thị các thông điệp hệ thống tự động trong kênh này.Bạn có thể tùy chỉnh sự xuất hiện của các tin nhắn này bằng cách sử dụng callback TextChannel.OnIncomingMessage.

Bạn có thể muốn tùy chỉnh hoặc thay đổi các tin nhắn hệ thống được phát ra tự động bởi hệ thống trò chuyện.Vì các tin nhắn hệ thống mặc định được dịch cho người dùng, bạn nên tham chiếu chúng bằng TextChatMessage.Metadata trong cuộc gọi trò chuyện văn bản nếu bạn muốn tùy chỉnh trang phục của chúng.Ví dụ, bạn có thể sử dụng Metadata để xác định tin nhắn hệ thống, tin nhắn lỗi, hoặc tin nhắn từ các hệ thống cụ thể trong trải nghiệm của bạn.

Hệ thống

Để gửi một tin nhắn hệ thống cho người chơi địa phương, chẳng hạn như "phát biểu" từ một hệ thống địa chỉ công cộng, gọi DisplaySystemMessage() từ kênh mặc định RBXGeneral với một tiền tố trước tên hiển thị của người chơi.

Tập lệnh khách hàng

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 "
-- Gửi "tin nhắn hệ thống" cho người chơi với tên hiển thị được gắn vào
generalChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)
Image showing a basic system message in the chat window.

NPC/vật phẩm

Bạn cũng có thể trang trí lời thoại không phải người chơi và thêm bong bóng trò chuyện để làm cho nó trông giống như tin nhắn đến từ một NPC hoặc đối tượng trong thế giới 3D.

Tập lệnh khách hàng

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")
-- Kiểm tra các tin nhắn hệ thống chứa metadata
if not textChatMessage.TextSource and textChatMessage.Metadata ~= "" then
-- Thêm chữ đầu để làm cho tin nhắn trông giống như nó được gửi bởi một người chơi
properties.PrefixText = string.format("<font color='#%s'>%s: </font>", "#50C999", textChatMessage.Metadata)
-- Thêm trò chuyện bong bóng
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.