[개체 탐색] FindFirstChild()로 자식 탐색하기

beans·2023년 4월 18일
0

FindFirstChild() 메소드는 해당 개체의 첫 번째 자식 개체를 반환합니다. 만약 개체 이름이 주어지면, 해당 이름을 가진 자식 개체를 반환합니다. 개체의 이름이 "Child"인 첫 번째 자식 개체를 찾으려면 다음과 같은 코드를 작성할 수 있습니다.

local parent = workspace.Part
local child = parent:FindFirstChild("Child")
if child then
    child.Color = Color3.new(1, 1, 0)
end
local parent = workspace
local child = parent:FindFirstChild("한글 이름")
if child then
    child.Color = Color3.new(0, 1, 0)
end

. (닷 연산자)와 다르게 탐색 당시 찾으려는 개체가 존재하지 않으면 오류가 발생되지 않고, nil을 반환합니다. 따라서 ‘Child’가 workspace.Part 내에 존재하지 않으면 child 변수는 nil 입니다.

만약 “Child”와 동일한 개체가 존재할 경우 그 중에서 먼저 탐색된 “Child”를 반환합니다. 탐색 순서는 그때 그때 다르기 때문에 정확한 이름으로 자식을 탐색하려는 경우 탐색할 자식 개체의 이름은 중복되지 않는 것이 좋습니다.

1번째 인자로 자식의 이름을 넣고, 2번째 인자로 true를 넣으면, parent 의 모든 자식에서, 자식의 자식에서 Child를 탐색합니다.

local newPart = Instance.new('Part')
newPart.Parent = workspace.Part
newPart.Name = 'new'
-- workspace.Part 내에 'new라는 Part가 생성되었습니다. (workspace.Part.new)

local foundedNewPart = workspace:FindFirstChild("new", true)
print(foundedNewPart)  -- print() 함수는 () 안에 있는 것을 출력해줍니다.
-- 출력: new

FindFirstChild()는 닷 연산자보다 동작 속도가 약간 더 느리며, 2번째 인자로 true가 있을 경우 parent의 모든 자식을 탐색하며 “Child”를 찾을 때까지 수행하기 때문에 true가 없을 경우에 비해 동작 속도가 더 느려질 수 있습니다. true가 없을 경우 false가 있는 것과 동일하게 동작하며, parent의 한 단계 내부의 자식들만 탐색합니다.

0개의 댓글