Được áp dụng cho các nguồn dữ liệu và nhập, lọc văn bản ngăn chặn người dùng xem những thông tin ngôn ngữ và cá nhân có thể nhận biết như số điện thoại. Roblox tự động lọc các kết quả dữ liệu thông thườ
Lọc Sценаrios
Văn bản có thể được thu thập và/hoặc hiển thị cho người dùng trong một loạt các tình huống, bao gồm:
Một trải nghiệm thu thập nhập chữ của người dùng qua các đầu vào TextBox , một GUI tùy chỉnh có các nút như một bàn phím/keypad, hoặc một mô hình bàn phím tương tác trong không gian 3D.
Một trải nghiệm tạo ra từ những từ ngẫu nhiên và hiển thị chúng cho người dùng, vì có khả năng tạo ra những từ không phù hợp.
Một trải nghiệm 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ải nghiệm. Thường 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ải nghiệm 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 data stores, nơi văn bản đã lưu có thể bao gồm các từ khó không phù hợp mà nên được lọc khi lấy chúng.
Quá Trình Lọc
TextService:FilterStringAsync() lọc trong kinh nghiệm text bằng cách mang một chuỗi text và UserId của người tạo text như một input. Nó trả lại một TextFilterResult đối tượng có hai phương thức bạn có thể gọi trong các tì
- TextFilterResult:GetNonChatStringForBroadcastAsync() đối với việc lọc chữ để hiển thị cho tất cả người dùng trong một trải nghiệm, chẳng hạn như cho một hội thoại cho phép người dùng viết một tin nhắn trên dấu hiệu đang hiển thị cho tất cả người dùng trên máy chủ.
- 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 ngữ cảnh của TextBox 輸入, ví dụ sau đây thu thập đ
Lọc dữ liệu vào - Tập lệnh khách hàng
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 văn bản nhập cho máy chủ để lọc
local inputRemoteEvent = ReplicatedStorage:FindFirstChild("InputRemoteEvent")
-- Người tùy chỉnh sự kiện cho focus lost and enter being pressed
local function onFocusLost(enterPressed, inputObject)
if enterPressed then
print("SUBMITTED:", textBox.Text)
if inputRemoteEvent then
inputRemoteEvent:FireServer(textBox.Text)
end
end
end
textBox.FocusLost:Connect(onFocusLost)
Lọc dữ liệu vào - Server Script
local TextService = game:GetService("TextService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- RemoteEvent để nhận nhập tin nhập 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("Error generating TextFilterResult:", errorMessage)
end
end
-- Được kích hoạt khi khách hàng gửi dữ liệu 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("FILTERED:", filteredText)
else
warn("Error filtering text!")
end
end
end
end
inputRemoteEvent.OnServerEvent:Connect(onInputReceived)