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.

Zastosowane do różnych źródeł i wejść, filtrowanie tekstu zapobiega użytkownikom w widzeniu nieodpowiedniego 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 grze, 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:

  • Gra, która zbiera wejście tekstowe użytkowników za pomocą wpisów TextBox, niestandardowego GUI z przyciskami, takimi jak interfejs klawiatury/klawiatury numerycznej, lub interaktywnego modelu klawiatury w przestrzeni 3D.

  • Gra, która generuje słowa z losowych znaków i wyświetla je użytkownikom, ponieważ istnieje szansa, że stworzy nieodpowiednie słowa.

  • Gra, która łączy się z zewnętrznym serwerem internetowym, aby pobrać treści, które są wyświetlane w grze. Często nie będziesz miał kontroli nad treścią zewnętrznej witryny, a osoba trzecia może edytować informacje.

  • Gra, która przechowuje tekst, taki jak imiona zwierząt użytkowników, za pomocą magazynów danych, gdzie przechowywany tekst może zawierać nieodpowiednie słowa, które powinny być filtrowane podczas ich pobierania.

Proces filtrowania

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

W kontekście wejścia TextBox, poniższy przykład zbiera dane wejściowe na zdarzeniu FocusLost i wysyła je do serwera za pomocą RemoteEvent. Na serwerze jest najpierw filtrowany przez FilterStringAsync(), a następnie GetNonChatStringForBroadcastAsync(), z zamiarem, że tekst będzie wyświetlany wszystkim użytkownikom na obiekcie po stronie serwera, takim jak SurfaceGui w świecie 3D.

Filtrowanie wejścia tekstowego - skrypt klienta
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 wejścia tekstowego do serwera w celu filtrowania
local inputRemoteEvent = ReplicatedStorage:FindFirstChild("InputRemoteEvent")
-- Obsługa zdarzenia dla utraty fokusu i naciśnięcia klawisza Enter
local function onFocusLost(enterPressed, inputObject)
if enterPressed then
print("ZAAKCEPTOWANO:", textBox.Text)
if inputRemoteEvent then
inputRemoteEvent:FireServer(textBox.Text)
end
end
end
textBox.FocusLost:Connect(onFocusLost)
Filtrowanie wejścia tekstowego - skrypt serwera
local TextService = game:GetService("TextService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- RemoteEvent do odbierania wejścia tekstowego od klienta w celu 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 generowania TextFilterResult:", errorMessage)
end
end
-- Wywoływane, gdy klient przesyła wejście 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 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.