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)

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 định | Tê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 |
RBXWhisper | Tê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 .

Tài sản | Mô tả | Mặc định |
---|---|---|
BackgroundColor3 | Color3 màu nền của cửa sổ trò chuyện. | [25, 27, 29] |
BackgroundTransparency | Sự minh bạch của nền của cửa sổ trò chuyện. | 0.3 |
FontFace | Font của văn bản cửa sổ trò chuyện. | BuilderSansMedium |
TextColor3 | Color3 của văn bản cửa sổ trò chuyện. | [255, 255, 255] |
TextSize | Kích thước văn bản của cửa sổ trò chuyện. | 14 |
TextStrokeColor3 | Color3 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 |
HorizontalAlignment | Sắp xếp ngang của cửa sổ trò chuyện. | Left |
VerticalAlignment | Chỉnh sắp dọc của cửa sổ trò chuyện. | Top |
HeightScale | Tỉ lệ chiều cao của cửa sổ trò chuyện so với kích thước màn hình. | 1 |
WidthScale | Tỉ 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 .

Tài sản | Mô tả | Mặc định |
---|---|---|
BackgroundColor3 | Color3 màu nền của thanh nhập trò chuyện. | [25, 27, 29] |
BackgroundTransparency | Sự minh bạch của nền của thanh nhập trò chuyện. | 0.2 |
FontFace | Font của văn bản nhập trò chuyện. | BuilderSansMedium |
PlaceholderColor3 | Color3 của văn bản nhập chat giả mạo. | [178, 178, 178] |
TextColor3 | Color3 của văn bản nhập trò chuyện do người chơi nhập. | [255, 255, 255] |
TextSize | Kích thước của văn bản nhập trò chuyện. | 14 |
TextStrokeColor3 | Color3 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 |
AutocompleteEnabled | Liệ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 |
KeyboardKeyCode | Cá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 .

Tài sản | Mô tả | Mặc định |
---|---|---|
BackgroundColor3 | Color3 màu nền của các tab kênh. | [25, 27, 29] |
BackgroundTransparency | Sự minh bạch của nền của các tab kênh. | 0 |
HoverBackgroundColor3 | Color3 màu nền của tab khi di chuột qua chúng. | [125, 125, 125] |
FontFace | Font cho văn bản trong tab kênh. | BuilderSansBold |
TextColor3 | Color3 của văn bản trong một tab chưa được chọn. | [175, 175, 175] |
SelectedTabTextColor3 | Color3 của văn bản trong một tab được chọn. | [255, 255, 255] |
TextSize | Kích thước của văn bản trong tab kênh. | 18 |
TextStrokeColor3 | Color3 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 ChatWindowMessageProperties và TextChatService.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 ChatWindowMessageProperties và OnChatWindowAdded .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.

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 .

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.

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.CreateDefaultTextChannels là true, 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.LocalPlayerlocal generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGenerallocal 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àogeneralChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)

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)
