텍스트 필터링

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

다양한 소스 및 입력에 적용되는 텍스트 필터링은 사용자가 부적절한 언어와 개인 식별 정보를 보지 못하도록 합니다. 음성 채팅에서 메시지를 보내면 Roblox가 자동으로 표시하는 일반적인 텍스트 출력을 필터링하지만, 필터링

필터 시나리오

텍스트는 사용자에게 제공되며/또는 다양한 시나리오에 표시될 수 있습니다.

  • 사용자의 텍스트 입력을 수집하는 경험은 Class.Toolbar 항목을 통해 TextBox 버튼이나 키보드/키패드 인터페이스와 같은 사용자 지정 도구를 사용하여 사용자의 텍스트 입력을 수집합니다. 또는 3D 공간의 인터랙티브 키보드 모델과 같은 버튼이 있는 사용자 지정 GUI.

  • 사용자에게 표시되는 무작위 단어를 생성하는 경험이며, 부적절한 단어를 만들 수 있습니다.

  • 외부 웹 서버에 연결하여 경험에 표시되는 콘텐츠를 가져오는 경험. 종종 경험 내 콘텐츠에 대한 제어가 없으며 제3자가 정보를 편집할 수 있습니다.

  • 사용자의 애완 동물 이름과 같은 텍스트를 데이터 저장소를 사용하여 저장하는 경험, 저장된 텍스트에 부적절한 단어가 포함되어 검색할 때 필터링해야 하는 경우가 있습니다.

필터링 프로세스

TextService:FilterStringAsync() 텍스트 경험 텍스트에서 문자열 및 UserId 사용자가 텍스트를 입력한 문자열을 가져와 TextFilterResult 개체를 반환합니다. 이 개체는 두 가지 추가 메서드를 가진 텍스트 필터를 가진

Class.Toolbar 입력의 컨텍스트에서 다음 예시는 Class.Toolbar.FocusLost|FocusL

텍스트 입력 필터링 - 클라이언트 스크립트

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
-- 입력란에서 텍스트 입력 시 발생
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)