ตัวอย่างนี้แสดงวิธีการใช้คลาส TextChatService เพื่อออกแบบฟรอนต์เอนด์ของคุณเองมันใช้ช่องข้อความเริ่มต้นจาก CreateDefaultTextChannels และมีความเรียบง่ายมากกว่า UI เริ่มต้น
ปิดใช้งาน UI เริ่มต้นที่มาพร้อมกับ TextChatService โดยการตั้งค่าคุณสมบัติ ChatWindowConfiguration.Enabled และ ChatInputBarConfiguration.Enabled ให้เป็น false ในหน้าต่างคุณสมบัติของ Studio ****
สร้างตัวแทนสําหรับแถบการใส่ข้อความแชท นี่คือกล่องข้อความที่ออกเมื่อผู้ใช้กด Enter
สร้าง ScreenGui และให้เป็นพ่อของ StarterGui
สร้าง TextBox และให้เป็นพ่อของมันกับใหม่ ScreenGui จากนั้น เปลี่ยนตำแหน่ง และ ปรับขนาด ตามต้องการ
สร้าง LocalScript และให้เป็นพ่อของใหม่ TextBox
เพิ่มโค้ดต่อไปนี้ใน LocalScript :
ไคลเอนต์local TextChatService = game:GetService("TextChatService")-- RBXGeneral เป็นช่องสาธารณะเริ่มต้นlocal 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-- ผู้ใช้คาดว่ากล่องใส่ข้อความจะถูกล้างหลังจากส่งข้อความtextBox.Text = ""endend)
สร้างตัวแทนสำหรับหน้าต่างแชทนี่คือ ScrollingFrame ที่แสดงข้อความตามที่ได้รับจาก TextChatService.MessageReceivedขั้นตอนนี้ยังสร้าง UIListLayout เพื่อจัดเรียงข้อความโดยอัตโนมัติ
สร้างอีกใหม่ ScreenGui และให้เป็นพ่อของ StarterGui
สร้าง ScrollingFrame และให้เป็นพ่อของมันกับ ScreenGui จากนั้น เปลี่ยนตำแหน่ง และ ปรับขนาด ตามต้องการ
สร้าง UIListLayout และให้เป็นพ่อของ ScrollingFrame
สร้าง LocalScript และให้เป็นพ่อของ ScrollingFrame
เพิ่มโค้ดต่อไปนี้ใน LocalScript :
ไคลเอนต์local TextChatService = game:GetService("TextChatService")-- ฟังก์ชันสร้างฉลากข้อความใหม่สำหรับแต่ละข้อความที่ได้รับlocal 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-- เริ่มฟังข้อความที่เข้ามาTextChatService.MessageReceived:Connect(addMessageGui)
ทดสอบประสบการณ์ของคุณโดยส่งข้อความในแถบการใส่ข้อความแชทคุณควรเห็นข้อความปรากฏในหน้าต่างแชทจากนั้นคุณสามารถขยายตัวอย่างนี้โดยเพิ่มคุณสมบัติเช่นการโฟกัส TextBox เมื่อกดปุ่มหรือเพิ่มแท็กแชท