テキストフィルタ

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

さまざまなソースと入力に適用され、テキストフィルタ は、ユーザーが不適切な言語と個人識別情報 (電話番号など) を見ることを防ぐことができます。Roblox は、エクスペリエンス内のテキストチャットを通じて入手したメッセージなど、表

シナリオフィルタ

テキストは、さまざまなシナリオでユーザーに集めることができ、/または表示されます:

  • ユーザーの テキスト入力 を TextBox エントリを通じて集計するエクスペリエンス、キーボード/キーパッドインターフェイスなどのカスタムGUI、または 3D 空間のインタラクティブキーボードモデルなどのインタラクティブなキーボードモデル。

  • ランダムなキャラクターから作成された言葉を生成し、ユーザーに表示するエクスペリエンス。不適切な言葉を作成する可能性があります。

  • 外部のウェブサーバーに接続して、エクスペリエンス内のコンテンツを取得するエクスペリエンス。多くの場合、エクスペリエンス内のコンテンツにはコントロールできません。サードパーティーがコンテンツを編集できる場合があります。

  • ユーザーのペットの名前などのテキストを データストア を使用して保存するエクスペリエンス、ストレージされたテキストに不適切な言葉が含まれている場合があり、それらを取得するときにフィルタリングする必要があります。

フィルタプロセス

Class.TextService:FilterStringAsync() は、テキストのストリングとユーザーが入力として作成したテキストのストリングを取得して、エクスペリエンス内のテキストフィルターを扱います。 Class.Player.UserId|userId は、入力として作成されたテキストの Class.TextFilterResult オブジェクトを返し、ユーザ

  • TextFilterResult:GetNonChatStringForBroadcastAsync() で、サーバー上のすべてのユーザーが見えるテキストをフィルタリングするために、エクスペリエンス内のすべてのユーザーに表示されるテキストをフィルタリングします。たとえば、ユーザーがサイン上のメッセージを書くことができるダイアログなどです。
  • TextFilterResult:GetNonChatStringForUserAsync() ユーザーの年齢や他の詳細に基づいて、フィルターされたテキストを 1 人のユーザーに表示する。

Class.Toolbar 入力のコンテキストで、次の例は 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
-- クライアントが 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)