FindFirstChildOfClass() 메소드는 해당 클래스의 첫 번째 자식 개체를 반환합니다.
예를 들어, Part 클래스의 첫 번째 자식 개체를 찾으려면 다음과 같은 코드를 작성할 수 있습니다.
local parent = workspace
local child = parent:FindFirstChildOfClass("Part")
if child then
child.Color = Color3.new(1, 1, 1)
end
FindFirstChild()와 마찬가지로 존재하지 않으면 nil이 반환됩니다.
FindFirstChildOfClass()를 사용하여 개체를 찾을 경우 그 개체가 가지고 있는 속성들을 외우지 않고 자동 완성을 사용하여 오타 없이 정확하게 입력이 가능합니다.
Humanoid가 개체의 종류(클래스) 자체의 이름이기도 하지만 만약 Humanoid의 이름이 Humanoid2323 처럼 다른 이름으로 되어 있더라도 FindFirstChildOfClass()를 이용하면 클래스 이름으로 찾는 것이기 때문에 Humanoid 타입인 Humanoid2323을 찾을 수 있습니다.
타워 게임을 예로 들면, 주로 Damage 파트에 Touched된 개체가 플레이어임을 확인하기 위해 Humanoid가 있는지 확인하는 조건문에 사용할 수 있습니다. 아래와 같이 클래스 이름이 자동 완성 되므로 오타를 걱정할 일이 없습니다.
또 하나의 큰 장점이 있습니다. Humanoid클래스가 가지고 있는 속성들도 자동완성이 되기 때문에 Humanoid에만 존재하는 Health 속성이나 TakeDamage() 메소드 등 여러 속성/이벤트/메소드 등을 오타 걱정 없이 사용할 수 있습니다.
다음은 Workspace에 Damage라는 파트에 닿았을 경우 플레이어게 10의 데미지를 주고 싶을 때 FindFirstChildOfClass()를 사용한 코드입니다.
local damagePart: BasePart = workspace.Damage
local debounce = false
damagePart.Touched:Connect(function(coll: Part)
if debounce then return end
local character = coll.Parent
if not character then return end
local Humanoid = character:FindFirstChildOfClass('Humanoid')
if not Humanoid then return end
debounce = true
-- 10 데미지 주기
Humanoid:TakeDamage(10)
-- 1초 쿨타임
task.wait(1)
debounce = false
end)