Applicato a varie fonti e input, filtro del testo impedisce agli utenti di visualizzare informazioni linguistiche e personalmente identificabili come i numeri di telefono. Roblox filtra automaticamente le uscite del testo comuni come i messaggi che sono passati attraverso chat di testo in-experience, ma sei responsabile del filtro di qualsiasi testo visualizzato che non hai un controllo esplicito .
Filtra scenari
Il testo può essere raccolto e/o visualizzato agli utenti in una varietà di scenari, tra cui:
Un'esperienza che raccoglie gli input di testo degli utenti attraverso Class.Toolbar entradi, un'interfaccia GUI personalizzata con pulsanti come un'interfaccia touch / keypad o un modello di tastiera interattiva nello Spazio3D.
Un'esperienza che genera parole da personaggi casuali e le mostra agli utenti, poiché c'è una probabilità che creerà parole non appropriate.
Un'esperienza che si connette a un server web esterno per ottenere il contenuto visualizzato in-experience. Di solito non avrai il controllo sul contenuto del sito web esterno e un terzo può modificare le informazioni.
Un'esperienza che memorizza il testo, come il nome degli animali domestici degli utenti, utilizzando archivi di dati, in cui il testo memorizzato potrebbe includere parole non appropriate che dovrebbero essere filtrate quando vengono recuperati.
Processo di filtro
TextService:FilterStringAsync() i filtri nel testo in-experience facendo una stringa di testo e il UserId del utente che ha creato il testo come input. Ritorna un oggetto TextFilterResult che ha due metodi aggiuntivi che puoi chiamare in diversi scenari:
- TextFilterResult:GetNonChatStringForBroadcastAsync() per filtrare il testo visibile a tutti gli utenti in un'esperienza, come per un dialogo che consente a un utente di scrivere un messaggio su un segno che è visibile a tutti gli utenti sul Server.
- TextFilterResult:GetNonChatStringForUserAsync() per visualizzare il testo filtrato per un utente specifico, in base all'età e ad altri dettagli.
Nel contesto di TextBox input, l'esempio seguente raccoglie l'input sul Class.Toolbar.
Filtrare l'input del testo - Script del client
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local textBox = script.Parent
textBox.ClearTextOnFocus = false
textBox.PlaceholderText = "..."
textBox.TextXAlignment = Enum.TextXAlignment.Left
textBox.TextScaled = true
-- RemoteEvent per inviare l'input del testo al server per il filtro
local inputRemoteEvent = ReplicatedStorage:FindFirstChild("InputRemoteEvent")
-- Handling evento per la perdita di focus e l'inserimento di essere premuto
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)
Filtrare l'input del testo - Server Script
local TextService = game:GetService("TextService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- RemoteEvent per ricevere l'input del testo dal client per il filtro
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
-- Si esegue quando il client invia l'input dalla 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)