Filtrowanie tekstu

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Stosowane w różnych źródłach i danych wejściowych, filtrowanie tekstu zapobiega użytkownikom widzenia niewłaściwego języka oraz informacji umożliwiających identyfikację osobistą, takich jak numery telefonów. Roblox automatycznie filtruje powszechne wyjścia tekstowe, takie jak wiadomości, które przeszły przez czat tekstowy w doświadczeniach, ale to Ty jesteś odpowiedzialny za filtrowanie wszelkiego wyświetlanego tekstu, nad którym nie masz wyraźnej kontroli.

Scenariusze filtrowania

Tekst może być zbierany i/lub wyświetlany użytkownikom w różnych scenariuszach, w tym:

  • Doświadczenie, które zbiera dane wejściowe tekstowe użytkowników przez wpisy TextBox, niestandardowy interfejs GUI z przyciskami, takimi jak interfejs klawiatury, lub interaktywny model klawiatury w przestrzeni 3D.

  • Doświadczenie, które generuje słowa z losowych znaków i wyświetla je użytkownikom, ponieważ istnieje szansa, że stworzy niewłaściwe słowa.

  • Doświadczenie, które łączy się z zewnętrznym serwerem internetowym, aby pobrać treści, które są wyświetlane w doświadczeniu. Często nie masz kontroli nad treścią zewnętrznej witryny, a osoba trzecia może edytować informacje.

  • Doświadczenie, które przechowuje teksty, takie jak imiona zwierząt użytkowników, przy użyciu magazynów danych, gdzie przechowywany tekst może zawierać niewłaściwe słowa, które powinny być filtrowane podczas ich pobierania.

Proces filtrowania

TextService:FilterStringAsync() filtruje tekst w doświadczeniu, przyjmując jako argument ciąg tekstowy oraz UserId użytkownika, który utworzył ten tekst. Zwraca obiekt TextFilterResult, który ma dwie dodatkowe metody, które możesz wywołać w różnych scenariuszach:

W kontekście danych wejściowych TextBox, poniższy przykład zbiera dane wejściowe na zdarzeniu FocusLost i wysyła je do serwera przez RemoteEvent. Na serwerze jest najpierw filtrowany przez FilterStringAsync(), a następnie GetNonChatStringForBroadcastAsync(), mając na celu wyświetlenie tekstu wszystkim użytkownikom na obiekcie po stronie serwera, takim jak SurfaceGui w świecie 3D.

Filtrowanie danych wejściowych tekstu - Skrypt kliencki

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local textBox = script.Parent
textBox.ClearTextOnFocus = false
textBox.PlaceholderText = "..."
textBox.TextXAlignment = Enum.TextXAlignment.Left
textBox.TextScaled = true
-- RemoteEvent do wysyłania danych wejściowych tekstu do serwera do filtrowania
local inputRemoteEvent = ReplicatedStorage:FindFirstChild("InputRemoteEvent")
-- Obsługuje zdarzenie utraty focusu i naciśnięcia klawisza Enter
local function onFocusLost(enterPressed, inputObject)
if enterPressed then
print("ZGŁOSZONE:", textBox.Text)
if inputRemoteEvent then
inputRemoteEvent:FireServer(textBox.Text)
end
end
end
textBox.FocusLost:Connect(onFocusLost)
Filtrowanie danych wejściowych tekstu - Skrypt serwerowy

local TextService = game:GetService("TextService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- RemoteEvent do odbierania danych wejściowych tekstu od klienta do filtrowania
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("Błąd podczas generowania TextFilterResult:", errorMessage)
end
end
-- Uruchamiane, gdy klient przesyła dane wejściowe z 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("FILTROWANE:", filteredText)
else
warn("Błąd podczas filtrowania tekstu!")
end
end
end
end
inputRemoteEvent.OnServerEvent:Connect(onInputReceived)
©2026 Roblox Corporation. Nazwa Roblox, logo Roblox oraz hasło „Powering Imagination” należą do naszych zarejestrowanych i niezarejestrowanych znaków towarowych na terenie Stanów Zjednoczonych oraz w innych krajach.