Contoh ini menunjukkan cara menggunakan kelas TextChatService untuk merancang frontend Anda sendiri. Ini menggunakan kembali saluran teks default dari CreateDefaultTextChannels dan sangat sederhana dibandingkan dengan UI default.
Nonaktifkan UI default yang datang dengan TextChatService dengan mengatur properti ChatWindowConfiguration.Enabled dan ChatInputBarConfiguration.Enabled ke false di jendela Properties Studio.
Buat pengganti untuk bilah input obrolan. Ini adalah kotak teks yang mengirimkan pesan ketika pengguna menekan Enter.
Buat ScreenGui dan tempatkan di StarterGui.
Buat TextBox dan tempatkan di ScreenGui yang baru, kemudian ubah posisi dan ukuran sesuai keinginan.
Buat LocalScript dan tempatkan di TextBox yang baru.
Tambahkan kode berikut ke LocalScript:
Clientlocal TextChatService = game:GetService("TextChatService")-- RBXGeneral adalah saluran publik defaultlocal RBXGeneral = TextChatService:FindFirstChild("TextChannels"):WaitForChild("RBXGeneral")local textBox = script.ParenttextBox.FocusLost:Connect(function(enterPressed)local text = textBox.Textif enterPressed and #text > 0 thenlocal success, response = pcall(function()return RBXGeneral:SendAsync(textBox.Text)end)if not success thenRBXGeneral:DisplaySystemMessage("Gagal mengirim pesan")end-- Pengguna mengharapkan kotak input dikosongkan setelah mengirim pesantextBox.Text = ""endend)
Buat pengganti untuk jendela obrolan. Ini adalah ScrollingFrame yang menampilkan pesan saat diterima dari TextChatService.MessageReceived. Langkah ini juga membuat UIListLayout untuk secara otomatis menyusun pesan.
Buat ScreenGui baru dan tempatkan di StarterGui.
Buat ScrollingFrame dan tempatkan di ScreenGui, kemudian ubah posisi dan ukuran sesuai keinginan.
Buat UIListLayout dan tempatkan di ScrollingFrame.
Buat LocalScript dan tempatkan di ScrollingFrame.
Tambahkan kode berikut ke LocalScript:
Clientlocal TextChatService = game:GetService("TextChatService")-- Fungsi untuk membuat label teks baru untuk setiap pesan yang diterimalocal function addMessageGui(textChatMessage: TextChatMessage)local isOutgoingMessage = textChatMessage.Status == Enum.TextChatMessageStatus.Sendinglocal parent = script.Parentlocal originalLabel = parent:FindFirstChild(textChatMessage.MessageId)if originalLabel thenoriginalLabel.Text = textChatMessage.TextoriginalLabel.BackgroundTransparency = if isOutgoingMessage then 0.5 else 0elselocal textLabel = Instance.new("TextLabel")textLabel.BorderSizePixel = 0textLabel.Font = Enum.Font.BuilderSanstextLabel.TextSize = 18textLabel.TextXAlignment = Enum.TextXAlignment.LefttextLabel.BackgroundTransparency = if isOutgoingMessage then 0.5 else 0textLabel.BackgroundColor3 = Color3.fromRGB(0, 0, 0)textLabel.TextColor3 = Color3.fromRGB(255, 255, 255)textLabel.Name = textChatMessage.MessageIdtextLabel.AutomaticSize = Enum.AutomaticSize.XYtextLabel.Text = textChatMessage.TexttextLabel.Parent = parentendend-- Mulai mendengarkan pesan yang masukTextChatService.MessageReceived:Connect(addMessageGui)
Uji permainan Anda dengan mengirim pesan di bilah input obrolan. Anda akan melihat pesan muncul di jendela obrolan. Anda kemudian dapat mengembangkan contoh ini dengan menambahkan fitur seperti memfokuskan TextBox saat tombol ditekan atau menambahkan tag obrolan.