文字濾鏡

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

適用於各種來源和輸入, 文字過濾 防止使用者看到不適當的語言和個人身份標識信息,例如電話號碼。 Roblox 會自動過濾常見的文字輸出,例如通過體驗文字聊天發送的訊息,但 你負責過濾任何顯示的文字,你不能控制

過濾場景

文字可以被收集並/或顯示給用戶在各種情況下,包括:

  • 一個收集使用者輸入文字通過TextBox項目的體驗,一個自訂GUI,其包含按鍵盤/鍵盤界面或3D空間中的互動鍵盤模型。

  • 一個會從隨機角色中生成文字,並且顯示給使用者的體驗,因為有機會會生成不當的文字。

  • 連接到外部網站的體驗,以取得體驗中顯示的內容。通常您沒有控制外部網站的內容,而第三方可以編輯信息。

  • 一個使用 資料儲存 儲存用戶寵物名稱的體驗,當用戶寵物名稱包含不當字詞,會在重新擷取時過濾。

過濾過程

TextService:FilterStringAsync() 在體驗中以文字串和 UserId 的用戶梳理過的文字體驗內容,並且返回一個 TextFilterResult 對象,其中有兩個額外的方法:

TextBox 輸伺服器的上下文中,以下示例會在 FocusLost

過濾文字輸入 - 客戶端指令碼

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local textBox = script.Parent
textBox.ClearTextOnFocus = false
textBox.PlaceholderText = "..."
textBox.TextXAlignment = Enum.TextXAlignment.Left
textBox.TextScaled = true
-- 遠端事件發送文字輸入到服務器以進行過濾
local inputRemoteEvent = ReplicatedStorage:FindFirstChild("InputRemoteEvent")
-- 專注度損失和輸入被按下的事件處理器
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)
過濾文字輸入 - 伺服器指令碼

local TextService = game:GetService("TextService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- 遠端事件接收客戶端輸入的文字以進行篩選
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
-- 發射時,客戶端從文字輸入框提交輸入
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)