Kustomisasi jendela obrolan

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Sistem obrolan teks dalam permainan, yang didukung oleh TextChatService, memungkinkan pemain untuk dengan mudah berkomunikasi dan bersosialisasi satu sama lain dalam permainan langsung. Selain mendukung obrolan teks default, Anda dapat mengustomisasi antarmuka pengguna front-end.

Konfigurasi jendela obrolan

Jendela obrolan keseluruhan terdiri dari:

  • Jendela obrolan
  • Bilah input
  • Tab saluran (opsional)
Komponen inti dari jendela obrolan teks.

Tab saluran tidak aktif secara default dan setiap komponen dapat dihidupkan dan dimatikan di Studio atau melalui pemrograman:

Di jendela Explorer, perluas cabang TextChatService dan pilih ChatWindowConfiguration, ChatInputBarConfiguration, atau ChannelTabsConfiguration. Kemudian aktifkan atau nonaktifkan komponen di jendela Properties.

Ketika ChannelTabsConfiguration diaktifkan, setiap default TextChannel muncul dalam tab seperti yang diuraikan dalam tabel berikut. Selain itu, setiap TextChannel yang disesuaikan membuat tab yang sesuai dengan properti Name dari saluran tersebut.

Saluran defaultNama tab
RBXGeneralUmum
RBXSystemUmum (digabungkan menjadi satu tab dengan RBXGeneral)
RBXTeamTim
RBXWhisperNama pengguna dari pemain lain

Penampilan jendela

Penampilan jendela obrolan keseluruhan dapat disesuaikan melalui ChatWindowConfiguration.

Instansi ChatWindowConfiguration di hierarki Explorer.
PropertiDeskripsiDefault
BackgroundColor3Warna latar belakang Color3 dari jendela obrolan.[25, 27, 29]
BackgroundTransparencyTransparansi latar belakang jendela obrolan.0.3
EnabledApakah akan menampilkan jendela obrolan default. Atur ke false untuk menyembunyikan.true
FontFaceFont dari teks jendela obrolan.BuilderSansMedium
TextColor3Color3 dari teks jendela obrolan.[255, 255, 255]
TextSizeUkuran teks jendela obrolan.14
TextStrokeColor3Color3 dari stroke untuk teks jendela obrolan.[0, 0, 0]
TextStrokeTransparencyTransparansi dari stroke untuk teks jendela obrolan.0.5
HorizontalAlignmentPenyelarasan horizontal jendela obrolan.Left
VerticalAlignmentPenyelarasan vertikal jendela obrolan.Top
HeightScaleSkala tinggi jendela obrolan relatif terhadap ukuran layar.1
WidthScaleSkala lebar jendela obrolan relatif terhadap ukuran layar.1

Penampilan bilah input

Penampilan bilah input obrolan dapat disesuaikan melalui ChatInputBarConfiguration.

Instansi ChatInputBarConfiguration di hierarki Explorer.
PropertiDeskripsiDefault
BackgroundColor3Warna latar belakang Color3 dari bilah input obrolan.[25, 27, 29]
BackgroundTransparencyTransparansi latar belakang bilah input obrolan.0.2
FontFaceFont dari teks input obrolan.BuilderSansMedium
PlaceholderColor3Color3 dari teks input obrolan placeholder.[178, 178, 178]
TextColor3Color3 dari teks input obrolan yang dimasukkan pemain.[255, 255, 255]
TextSizeUkuran teks input obrolan.14
TextStrokeColor3Color3 warna stroke dari teks input obrolan.[0, 0, 0]
TextStrokeTransparencyTransparansi dari stroke untuk teks input obrolan.0.5
AutocompleteEnabledApakah sistem obrolan teks menunjukkan opsi autocompletion untuk emoji dan perintah. Emoji di-autocomplete dengan mengetik : diikuti oleh karakter non-spasi, sedangkan perintah di-autocomplete dengan mengetik /.true
KeyboardKeyCodeKey tambahan yang dapat ditekan pemain untuk memicu fokus pada bilah input obrolan default.Slash

Penampilan tab saluran

Penampilan tab saluran dapat disesuaikan melalui ChannelTabsConfiguration.

Instansi ChannelTabsConfiguration di hierarki Explorer.
PropertiDeskripsiDefault
BackgroundColor3Warna latar belakang Color3 dari tab saluran.[25, 27, 29]
BackgroundTransparencyTransparansi latar belakang tab saluran.0
HoverBackgroundColor3Warna latar belakang Color3 dari tab saat mengarahkan kursor di atasnya.[125, 125, 125]
FontFaceFont untuk teks di tab saluran.BuilderSansBold
TextColor3Color3 dari teks di tab yang tidak dipilih.[175, 175, 175]
SelectedTabTextColor3Color3 dari teks di tab yang dipilih.[255, 255, 255]
TextSizeUkuran teks di tab saluran.18
TextStrokeColor3Color3 warna stroke dari teks di tab saluran.[0, 0, 0]
TextStrokeTransparencyTransparansi dari stroke untuk teks di tab saluran.1

Kustomisasi pesan

Anda dapat mengustomisasi penampilan badan pesan obrolan dan prefix menggunakan ChatWindowMessageProperties dan TextChatService.OnChatWindowAdded callbacks tanpa menggantikan UI yang ada. Opsi kustomisasi ini memungkinkan Anda memodifikasi penampilan pesan obrolan agar sesuai dengan tema permainan Anda, dan Anda juga dapat menyortir atau menyoroti pesan dari grup pengguna yang berbeda dengan mewarnai prefix atau menambahkan tag obrolan.

Warnai nama pengguna

Ketika seorang pengguna mengirim pesan obrolan, DisplayName mereka tampil sebagai bagian prefix dari pesan tersebut. Secara default, nama setiap pengguna diberi warna sesuai dengan Player.TeamColor tetapi Anda dapat mengubah warna nama obrolan menggunakan ChatWindowMessageProperties dan OnChatWindowAdded. Skrip LocalScript berikut dalam StarterPlayerScripts mengassign warna yang telah ditentukan untuk setiap pengguna, memilih secara acak dari tabel warna RGB.

Nama pengguna berwarna di jendela obrolan.
LocalScript - Warna Nama Pengguna Acak

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

Anda juga bisa menerapkan gradien warna dan transparansi untuk mewarnai prefix pesan menggunakan UIGradient.

Nama pengguna dengan gradien di jendela obrolan.
Warna Nama Pengguna Gradien

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

Kustomisasi teks kaya

Tag warna font teks kaya dapat digunakan untuk memformat pesan obrolan, berguna jika Anda ingin menerapkan pemformatan pada bagian tertentu dari pesan. Perlu dicatat bahwa teks kaya tidak mendukung gradien, tetapi contoh kode berikut menunjukkan bagaimana Anda dapat memindahkan nama pengguna (disimpan dalam TextChatMessage.PrefixText) ke dalam badan pesan dan kemudian menerapkan tagging teks kaya hanya pada bagian nama.

Kustomisasi teks kaya pada nama pengguna di jendela obrolan.
Kustomisasi Teks Kaya

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

Pesan dari sumber non-pemain

Ketika TextChatService.CreateDefaultTextChannels adalah true, salah satu saluran teks default adalah saluran RBXSystem. Skrip obrolan default secara otomatis menampilkan pesan sistem dalam saluran ini. Anda dapat mengustomisasi penampilan pesan ini menggunakan callback TextChannel.OnIncomingMessage.

Anda mungkin ingin menyesuaikan atau mengubah pesan sistem yang secara otomatis dikeluarkan oleh sistem obrolan. Karena pesan sistem default dilokalisasi untuk pengguna, Anda harus merujuknya dengan TextChatMessage.Metadata dalam callback obrolan teks jika Anda ingin menyesuaikan penampilannya. Misalnya, Anda bisa menggunakan Metadata untuk mengidentifikasi pesan sistem, pesan kesalahan, atau pesan dari sistem tertentu dalam permainan Anda.

Sistem

Untuk mengirim pesan sistem kepada pemain lokal, seperti "pidato" dari sistem pengumuman umum, panggil DisplaySystemMessage() dari saluran default RBXGeneral dengan prefix sebelum nama tampilan pemain.

Skrip Klien

local Players = game:GetService("Players")
local TextChatService = game:GetService("TextChatService")
local player = Players.LocalPlayer
local generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral
local PREFIX = "[Panduan] Selamat datang "
-- Kirim "pesan sistem" ke pemain dengan nama tampilan mereka dilampirkan
generalChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)
Gambar menunjukkan pesan sistem dasar di jendela obrolan.

NPC/objek

Anda juga dapat menata dialog non-pemain dan menambahkan gelembung obrolan untuk membuatnya tampak seolah pesan datang dari NPC atau objek dalam dunia 3D.

Skrip Klien

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")
-- Periksa pesan sistem yang mengandung metadata
if not textChatMessage.TextSource and textChatMessage.Metadata ~= "" then
-- Tambahkan prefix agar pesan terlihat seolah dikirim oleh pemain
properties.PrefixText = string.format("<font color='#%s'>%s: </font>", "#50C999", textChatMessage.Metadata)
-- Tambahkan gelembung obrolan
TextChatService:DisplayBubble(Workspace.Statue, textChatMessage.Text)
end
return properties
end
local message = "Selamat datang! Saya akan menjadi panduan Anda."
local speakerName = "Ksatria Kuno"
generalChannel:DisplaySystemMessage(message, speakerName)
Gambar menunjukkan NPC patung ksatria menyiarkan pesan obrolan ke jendela obrolan, bersama dengan gelembung obrolan di atas kepalanya.
©2026 Roblox Corporation. Roblox, logo Roblox, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.