Sesuaikan 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 pengalaman yang didukung oleh TextChatService, memungkinkan pemain untuk dengan mudah berkomunikasi dan berinteraksi satu sama lain dalam pengalaman langsungSelain mendukung obrolan teks default, Anda dapat kustomisasi antarmuka pengguna depan.

Konfigurasi jendela obrolan

Jendela obrolan keseluruhan terdiri dari:

  • Jendela obrolan
  • Bar masuk
  • Tab saluran (opsional)
Core components of the text chat window.

Tab saluran dinonaktifkan secara default dan setiap komponen dapat diaktifkan dan dimatikan di Studio atau melalui scripting:

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

Ketika ChannelTabsConfiguration diaktifkan, masing-masing default TextChannel muncul di tab seperti yang dijelaskan dalam tabel berikut.Selain itu, setiap kustom TextChannel membuat tab yang sesuai dengan properti channelName.

Saluran channelNama tab
RBXUmum Jenderal
SistemRBX Umum (dikombinasikan menjadi satu tab dengan RBXGeneral )
Tim RBX Tim
RBXWhisper Nama pengguna pemain lain

Tampilan penampilan

Penampilan jendela obrolan keseluruhan dapat disesuaikan melalui ChatWindowConfiguration .

ChatWindowConfiguration instance in Explorer hierarchy.
PropinsiDeskripsiStandar
BackgroundColor3Color3 warna latar belakang jendela obrolan.[25, 27, 29]
BackgroundTransparencyTransparansi latar belakang jendela chat.0.3
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 garis untuk teks jendela obrolan.0.5
HorizontalAlignmentPenyesuaian horizontal dari jendela obrolan.Left
VerticalAlignmentPenyesuaian vertikal jendela obrolan.Top
HeightScaleSkala ketinggian jendela obrolan relatif terhadap ukuran layar.1
WidthScaleSkala lebar jendela obrolan relatif terhadap ukuran layar.1

Tampilan bilah penampilan

Tampilan bilah input obrolan dapat disesuaikan melalui ChatInputBarConfiguration.

ChatInputBarConfiguration instance in Explorer hierarchy.
PropinsiDeskripsiStandar
BackgroundColor3Color3 warna latar belakang 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 penanda.[178, 178, 178]
TextColor3Color3 dari teks masuk obrolan yang dimasukkan oleh pemain.[255, 255, 255]
TextSizeUkuran teks input obrolan.14
TextStrokeColor3Color3 warna stroke teks input obrolan.[0, 0, 0]
TextStrokeTransparencyTransparansi stroke untuk teks masuk obrolan.0.5
AutocompleteEnabledApakah sistem obrolan teks menunjukkan opsi autocomplete untuk emoji dan perintah.Emoji diselesaikan secara otomatis dengan mengetik : diikuti dengan karakter non-spasi, sementara perintah diselesaikan secara otomatis dengan mengetik /.true
KeyboardKeyCodePemain kunci tambahan dapat menekan untuk memicu fokus pada bilah input obrolan default.Slash

Tampilan tab penampilan

Penampilan tab saluran adalah dapat disesuaikan melalui .

ChannelTabsConfiguration instance in Explorer hierarchy.
PropinsiDeskripsiStandar
BackgroundColor3Color3 warna latar belakang tab saluran.[25, 27, 29]
BackgroundTransparencyTransparansi latar belakang tab saluran.0
HoverBackgroundColor3Color3 warna latar belakang tab saat melayang 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 teks di tab saluran.[0, 0, 0]
TextStrokeTransparencyTransparansi stroke untuk teks di tab saluran.1

Sesuaikan pesan

Anda dapat menyesuaikan penampilan tubuh pesan obrolan dan pr prefik menggunakan ChatWindowMessageProperties dan TextChatService.OnChatWindowAdded panggilan balik tanpa menggantikan UI yang ada.Opsi kustomisasi memungkinkan Anda untuk memodifikasi tampilan pesan obrolan untuk sesuai dengan tema pengalaman Anda, dan Anda juga dapat mengurutkan atau menyoroti pesan dari berbagai kelompok pengguna dengan memberikan prefiks warna atau menambahkan tag obrolan.

Nama pengguna warna

Ketika pengguna mengirim pesan obrolan, bagian prefiks dari pesan ditampilkan sebagai DisplayName .Secara default, nama setiap pengguna diwarnai sesuai dengan Player.TeamColor tetapi Anda dapat mengubah warna nama obrolan menggunakan ChatWindowMessageProperties dan OnChatWindowAdded .Berikut adalah LocalScript di StarterPlayerScripts menugaskan warna yang telah ditentukan kepada setiap pengguna, memilih secara acak dari tabel warna RGB.

Colored user name in the chat window.
Skrip Lokal - 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 dapat menerapkan gradien warna dan transparansi ke prefiks pesan warna menggunakan UIGradient .

Gradient user name in the chat window.
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 teks kaya font dapat digunakan untuk memformat pesan obrolan, berguna jika Anda ingin menerapkan formatasi ke bagian pesan yang sangat spesifik.Perhatikan bahwa teks kaya tidak mendukung gradien, tetapi contoh kode berikut menunjukkan bagaimana Anda dapat memindahkan nama pengguna (disimpan di TextChatMessage.PrefixText ) ke dalam tubuh pesan dan kemudian menerapkan label teks kaya hanya pada bagian nama.

Rich text customization of user name in the chat window.
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

Kirim pesan dari sumber non-pemain

Terkadang, Anda mungkin ingin menampilkan dialog non-pemain di jendela obrolan, seperti "pidato" dari sistem alamat publik atau karakter non-pemain.

Sistem

Untuk mengirimkan pesan sistem ke pemain lokal, panggil DisplaySystemMessage() dari saluran default RBXGeneral dengan prefiks sebelum nama displaypemain.

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 = "[Guide] Welcome "
-- Kirim "pesan sistem" ke pemain dengan nama tampilan ditambahkan
generalChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)
Image showing a basic system message in the chat window.

Untuk panduan yang lebih terperinci tentang cara menyesuaikan tampilan pesan sistem, lihat Menyesuaikan pesan sistem.

Pesan sistem default

Ketika TextChatService.CreateDefaultTextChannels adalah true, salah satu saluran teks default adalah saluran RBXSystem.Skrip obrolan default secara otomatis menampilkan pesan sistem di channelini.Anda dapat menyesuaikan tampilan pesan ini menggunakan panggilan balik TextChannel.OnIncomingMessage.

Anda mungkin ingin menyesuaikan atau mengubah pesan sistem yang dikeluarkan secara otomatis oleh sistem obrolan.Karena pesan sistem default diterjemahkan untuk pengguna, Anda harus merujuknya dengan TextChatMessage.Metadata dalam panggilan obrolan teks jika Anda ingin menyesuaikan penampilan mereka.

Di bawah ini adalah referensi pesan sistem default yang dipancarkan oleh sistem obrolan:

metadataDeskripsi
Roblox.ChatTranslation.ChatWindow.SystemMessageMenunjukkan bahwa sistem dapat menerjemahkan pesan obrolan untuk Pemain
Roblox.Notification.Friend.JoinedTampil ketika salah satu teman Pemain bergabung dengan pengalaman
Roblox.MessageStatus.Peringatan.FloodcheckedTampil ketika Pesan Obrolan Teks yang dikirim Pemain dibatasi oleh Server
Roblox.MessageStatus.Peringatan.TextFilterGagalditampilkan ketika Pesan Obrolan Teks yang dikirim Pemain tidak dapat ditampilkan karena masalah Filter Teks
Roblox.MessageStatus.Peringatan.InvalidPrivacySettingsTampil ketika pengaturan privasi Pemain mencegah mereka mengirim Pesan Obrolan Teks
Roblox.MessageStatus.Peringatan.MessageTerlalu Panjangditampilkan saat Pemain mengirim Pesan Obrolan Teks dengan konten yang terlalu panjang
Roblox.MessageStatus.Peringatan.Tidak DikenalTampil ketika sistem gagal mengirimkan Pesan Obrolan Pemain karena alasan yang tidak diketahui
Roblox.Help.InfoTampilkan respons dari RBXHelpCommand TextChatCommand
Roblox.Version.InfoTampilkan respons dari RBXVersionCommand TextChatCommand
Roblox.Team.Success.SekarangDiTimditampilkan saat tim Pemain berubah
Roblox.Team.Error.CannotTeamChatJika Tidak Ada di Timditampilkan saat Pemain mengaktifkan RBXTeamCommandTextChatCommand tanpa berada di Team
Roblox.Whisper.Info.SuksesTampil ketika Pemain berhasil memulai percakapan Whisper
Roblox.Whisper.Welcome.Sentditampilkan saat memasukkan Saluran Teks Whisper
Roblox.Whisper.Error.Tidak Bisa Berbisik ke Diri SendiriTanggapan kesalahan dari RBXWhisperCommand TextChatCommand
Roblox.Whisper.Error.TargetTidakAdaTanggapan kesalahan dari RBXWhisperCommand TextChatCommand
Roblox.Whisper.Error.Terlalu Banyak PertandinganTanggapan kesalahan dari RBXWhisperCommand TextChatCommand
Roblox.Whisper.Error.Tidak diketahuiTanggapan kesalahan dari RBXWhisperCommand TextChatCommand
Roblox.Emote.Error.Tidak adaTanggapan kesalahan dari RBXEmoteCommand TextChatCommand
Roblox.Emote.Error.UserEmotesTak DiaktifkanTanggapan kesalahan dari RBXEmoteCommand TextChatCommand
Roblox.Emote.Error.TemporarilyTak TersediaTanggapan kesalahan dari RBXEmoteCommand TextChatCommand
Roblox.Emote.Error.Tidak DidukungTanggapan kesalahan dari RBXEmoteCommand TextChatCommand
Roblox.Emote.Error.Beralih ke R15Tanggapan kesalahan dari RBXEmoteCommand TextChatCommand
Roblox.Emote.Error.AnimationPlayingTanggapan kesalahan dari RBXEmoteCommand TextChatCommand
Roblox.Mute.Error.Playerynom tidak ditemukanTanggapan kesalahan dari RBXMuteCommand TextChatCommand
Roblox.Mute.Error.MultipleMatchesTanggapan kesalahan dari RBXMuteCommand TextChatCommand
Roblox.Mute.Error.Tidak Bisa Mute DiriTanggapan kesalahan dari RBXMuteCommand TextChatCommand
Roblox.Mute.Info.BerhasilRespon keberhasilan dari RBXMuteCommand TextChatCommand
Roblox.Unmute.Error.Pemain tidak ditemukanTanggapan kesalahan dari RBXUnmuteCommand TextChatCommand
Roblox.Unmute.Error.MultipleMatchesTanggapan kesalahan dari RBXUnmuteCommand TextChatCommand
Roblox.Unmute.Error.Tidak Bisa Mute DiriTanggapan kesalahan dari RBXUnmuteCommand TextChatCommand
Roblox.Unmute.Info.BerhasilRespons sukses dari RBXUnmuteCommand TextChatCommand

NPC/objek

Anda juga dapat menyulitkan dialog non-pemain dan menambahkan gelembung obrolan untuk membuatnya tampak seperti pesan berasal dari NPC atau objek di 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 berisi metadata
if not textChatMessage.TextSource and textChatMessage.Metadata ~= "" then
-- Tambahkan pr prefik untuk membuat pesan terlihat seperti dikirim oleh pemain
properties.PrefixText = string.format("<font color='#%s'>%s: </font>", "#50C999", textChatMessage.Metadata)
-- Tambahkan obrolan gelembung
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.