Lọc văn bản

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Áp dụng cho nhiều nguồn và đầu vào khác nhau, lọc văn bản ngăn người dùng nhìn thấy ngôn ngữ không phù hợp và thông tin cá nhân có thể nhận diện như số điện thoại. Roblox tự động lọc các đầu ra văn bản phổ biến như tin nhắn đã qua trò chuyện văn bản trong trò chơi, nhưng bạn có trách nhiệm lọc bất kỳ văn bản nào được hiển thị mà bạn không có quyền kiểm soát rõ ràng.

Các kịch bản lọc

Văn bản có thể được thu thập và/hoặc hiển thị cho người dùng trong nhiều kịch bản khác nhau, bao gồm:

  • Một trò chơi thu thập đầu vào văn bản của người dùng thông qua các mục TextBox, một GUI tùy chỉnh với các nút như giao diện bàn phím/bảng phím, hoặc một mô hình bàn phím tương tác trong không gian 3D.

  • Một trò chơi tạo ra các từ từ các ký tự ngẫu nhiên và hiển thị chúng cho người dùng, vì có khả năng nó sẽ tạo ra các từ không phù hợp.

  • Một trò chơi kết nối với một máy chủ web bên ngoài để lấy nội dung được hiển thị trong trò chơi. Thường thì bạn sẽ không có quyền kiểm soát nội dung của trang web bên ngoài và một bên thứ ba có thể chỉnh sửa thông tin.

  • Một trò chơi lưu trữ văn bản như tên thú cưng của người dùng bằng cách sử dụng cửa hàng dữ liệu, nơi văn bản được lưu trữ có thể bao gồm các từ không phù hợp cần được lọc khi truy xuất chúng.

Quy trình lọc

TextService:FilterStringAsync() lọc văn bản trong trò chơi bằng cách lấy một chuỗi văn bản và UserId của người dùng đã tạo ra văn bản đó làm đầu vào. Nó trả về một đối tượng TextFilterResult có hai phương thức bổ sung mà bạn có thể gọi trong các kịch bản khác nhau:

  • TextFilterResult:GetNonChatStringForBroadcastAsync() để lọc văn bản hiển thị cho tất cả người dùng trong một trò chơi, chẳng hạn như cho một hộp thoại cho phép người dùng viết một tin nhắn trên một biển báo mà tất cả người dùng trên máy chủ đều có thể nhìn thấy.
  • TextFilterResult:GetNonChatStringForUserAsync() để hiển thị văn bản đã lọc cho một người dùng cụ thể, dựa trên độ tuổi và các chi tiết khác.

Trong bối cảnh đầu vào TextBox, ví dụ sau thu thập đầu vào trong sự kiện FocusLost và gửi nó đến máy chủ thông qua một RemoteEvent. Trên máy chủ, nó được lọc trước thông qua FilterStringAsync() và sau đó GetNonChatStringForBroadcastAsync() với ý định rằng văn bản sẽ được hiển thị cho tất cả người dùng trên một đối tượng phía máy chủ như một SurfaceGui trong thế giới 3D.

Lọc Đầu Vào Văn Bản - Kịch Bản Khách
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local textBox = script.Parent
textBox.ClearTextOnFocus = false
textBox.PlaceholderText = "..."
textBox.TextXAlignment = Enum.TextXAlignment.Left
textBox.TextScaled = true
-- RemoteEvent để gửi đầu vào văn bản đến máy chủ để lọc
local inputRemoteEvent = ReplicatedStorage:FindFirstChild("InputRemoteEvent")
-- Xử lý sự kiện cho mất tiêu điểm và nhấn enter
local function onFocusLost(enterPressed, inputObject)
if enterPressed then
print("ĐÃ GỬI:", textBox.Text)
if inputRemoteEvent then
inputRemoteEvent:FireServer(textBox.Text)
end
end
end
textBox.FocusLost:Connect(onFocusLost)
Lọc Đầu Vào Văn Bản - Kịch Bản Máy Chủ
local TextService = game:GetService("TextService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- RemoteEvent để nhận đầu vào văn bản từ khách hàng để lọc
local inputRemoteEvent = ReplicatedStorage:FindFirstChild("InputRemoteEvent")
local function getFilterResult(text, fromUserId)
local filterResult
local success, errorMessage = pcall(function()
filterResult = TextService:FilterStringAsync(text, fromUserId)
end)
if success then
return filterResult
else
warn("Lỗi khi tạo TextFilterResult:", errorMessage)
end
end
-- Được gọi khi khách hàng gửi đầu vào từ TextBox
local function onInputReceived(player, text)
if text ~= "" then
local filterResult = getFilterResult(text, player.UserId)
if filterResult then
local success, filteredText = pcall(function()
return filterResult:GetNonChatStringForBroadcastAsync()
end)
if success then
print("ĐÃ LỌC:", filteredText)
else
warn("Lỗi khi lọc văn bản!")
end
end
end
end
inputRemoteEvent.OnServerEvent:Connect(onInputReceived)
©2026 Roblox Corporation. Roblox, logo Roblox và Powering Imagination là các nhãn hiệu đã đăng ký và chưa đăng ký của chúng tôi tại Hoa Kỳ và các quốc gia khác.