An verschiedene Quellen und Eingaben angewendet, Text-Filtering verhindert, dass Benutzer unangemessene Sprache und persönlich identifizierte Informationen wie Telefonnummern sehen. Roblox filtert automatisch häufige Textausgaben wie Nachrichten, die durch In-Experience-Chat , aber du bist verantwortlich für das Filtern aller angezeigten Texte, die du nicht explizit kontrollieren kannst.
Szenarien filtern
Text kann von Benutzern in einer Vielzahl von Szenarien gesammelt und/oder angezeigt werden, einschließlich:
Ein Erlebnis, das die Benutzeroberfläche von Class.Toolbar über die Einreichungen von TextBox sammelt, eine benutzerdefinierte GUI mit Schaltflächen wie einer Tastatur/-Tastatur-Oberfläche oder einem interaktiven Tastaturmodell im Platz.
Ein Erlebnis, das Wörter von zufälligen Zeichen erstellt und sie Benutzern anzeigt, da es eine Chance gibt, dass es unangemessene Wörter erstellt.
Ein Erlebnis, das sich mit einem externen Web-Server verbindet, um Inhalte zu erhalten, die im Erlebnis angezeigt werden. Oft haben Sie keine Kontrolle über den Inhalt der externen Website und ein Drittunternehmen kann die Informationen bearbeiten.
Ein Erlebnis, das Text wie die Haustiernamen von Benutzern mit Datenspeichern speichert, wobei der gespeicherte Text unangemessene Wörter enthalten kann, die beim Abrufen filtriert werden sollten.
Filmprozess
TextService:FilterStringAsync() filter im Erlebnis-Text, indem Sie eine Textzeile und die UserId des Benutzers, der den Text als Eingabe erstellt hat, nehmen. Es gibt ein TextFilterResult -Objekt, das zwei zusätzliche Methoden hat, die Sie in verschiedenen Szenarien aufrufen können:
- TextFilterResult:GetNonChatStringForBroadcastAsync() für das Filtern von Text, der für alle Benutzer in einem Erlebnis sichtbar ist, wie z. B. für ein Dialogfeld, das ein Benutzer auf einem Zeichen schreiben kann, das für alle Benutzer auf dem Server sichtbar ist.
- TextFilterResult:GetNonChatStringForUserAsync(), um für einen bestimmten Benutzer gefilterten Text anzuzeigen, basierend auf Alter und anderen Details.
Im Kontext der Eingabe von TextBox gibt das folgende Beispiel die Eingaben auf dem Class.Toolbar.FocusLost|FocusL
Text-Eingang filtern - Client-Skript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local textBox = script.Parent
textBox.ClearTextOnFocus = false
textBox.PlaceholderText = "..."
textBox.TextXAlignment = Enum.TextXAlignment.Left
textBox.TextScaled = true
-- Remote-Ereignis, um Text-Eingaben auf den Server zum Filtern zu senden
local inputRemoteEvent = ReplicatedStorage:FindFirstChild("InputRemoteEvent")
-- Ereignishändler für den Verlust des Fokus und das Drücken von
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)
Text-Eingang filtern - Server-Skript
local TextService = game:GetService("TextService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Remote-Ereignis, um Text-Eingaben des Clients zum Filtern zu erhalten
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
-- Gefällt aus, wenn der Client die Eingabe aus der TextBox einreicht
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)