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 menetapkan properti ChatWindowConfiguration.Enabled dan ChatInputBarConfiguration.Enabled ke false di jendela Properti Studio.
Buat pengganti untuk bilah input obrolan. Ini adalah kotak teks yang mengirim pesan saat pengguna menekan Enter .
Buat ScreenGui dan berikan kepada StarterGui .
Buat TextBox dan berikan kepada yang baru ScreenGui , kemudian reposisi dan ubah ukuran sesuai keinginan.
Buat LocalScript dan berikan kepada anak baru TextBox.
Tambahkan kode berikut ke LocalScript :
Pelangganlocal TextChatService = game:GetService("TextChatService")-- RBXGeneral adalah channelpublik 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("Failed to send message")end-- Pengguna mengharapkan kotak input dihapus setelah mengirim pesantextBox.Text = ""endend)
Buat pengganti untuk jendela chat.Ini adalah ScrollingFrame yang menampilkan pesan saat diterima dari TextChatService.MessageReceived .Langkah ini juga membuat UIListLayout untuk secara otomatis merangkai pesan.
Buat yang baru lagi ScreenGui dan berikan kepada StarterGui .
Buat ScrollingFrame dan berikan kepada ScreenGui , kemudian reposisi dan ubah ukuran sesuai keinginan.
Buat UIListLayout dan berikan kepada orangtuanya ke ScrollingFrame.
Buat LocalScript dan berikan kepada orangtuanya ke ScrollingFrame.
Tambahkan kode berikut ke LocalScript :
Pelangganlocal 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 masukTextChatService.MessageReceived:Connect(addMessageGui)
Uji pengalaman Anda dengan mengirim pesan di bilah input obrolan.Anda harus melihat pesan muncul di jendela obrolan.Anda kemudian dapat memperluas contoh ini dengan menambahkan fitur seperti memfokuskan TextBox ketika tombol ditekan atau menambahkan tag obrolan .