제미니 답변 : 

 

Godot 엔진에서 노드에 접근할 때 %와 $는 모두 노드 경로를 이용하는 방법이지만, 노드 검색 범위에서 차이가 있어요.

% (퍼센트)

%는 현재 씬 루트에서 노드를 찾아요. 즉, 현재 씬의 최상위 노드를 기준으로 경로를 탐색해요. 이 방법은 Unique Node를 사용하는 것과 동일해요. Unique Node는 Godot 4.0 이후에 도입된 기능으로, 씬 내에서 유일한 이름으로 노드를 등록하고, %를 이용해 어디서든 빠르게 접근할 수 있게 해줘요. 이 방식은 노드의 위치가 바뀌더라도 씬 내에서 이름만 동일하다면 스크립트를 수정할 필요가 없어서 안정적이고, 런타임 성능 저하도 거의 없어요.

장점:

  • 안정성: 노드의 위치가 변경되어도 경로를 수정할 필요가 없어요.
  • 효율성: 한 번 경로가 캐시되어 이후 접근이 매우 빨라요.
  • 가독성: 노드 이름으로 직관적인 접근이 가능해요.
  • 디버깅: 존재하지 않는 노드에 접근하려 할 경우, 에디터에서 경고를 띄워줘서 디버깅이 쉬워요.

$ (달러)

$는 현재 노드를 기준으로 노드를 찾아요. 이는 get_node() 함수를 사용하는 것과 같은 역할을 해요. $ 뒤에 오는 경로는 현재 스크립트가 붙어 있는 노드부터 시작하는 상대 경로 또는 씬의 최상위 노드부터 시작하는 절대 경로가 될 수 있어요.

장점:

  • 유연성: 현재 노드를 기준으로 노드를 찾으므로, 특정 부모나 형제 노드에 접근하기 용이해요.
  • 직관성: 노드 계층 구조를 보면서 상대적인 위치를 파악하기 쉬워요.

단점:

  • 위치 의존성: 노드의 위치가 변경되면 스크립트 내의 경로도 수정해야 해요.
  • 오류 가능성: 경로를 잘못 지정하거나 노드의 이름이 변경되면 런타임 오류가 발생할 수 있어요.
  • 성능: 매번 노드를 검색하기 때문에 % 방식보다 미세하게 느릴 수 있어요.

요약 📝

  • %: 씬 루트에서 검색 (Unique Node). 노드 위치가 바뀌어도 안정적.
  • $: 현재 노드에서 검색 (get_node()와 동일). 노드 위치에 따라 경로를 수정해야 함.

💡 일반적으로 Godot 4.0 이후 버전에서는 **%**를 사용해 Unique Node로 노드에 접근하는 것이 더 안전하고 효율적이에요. 특정 경우(예: 현재 노드의 직계 자식 노드에 빠르게 접근)를 제외하고는 $ 대신 %를 사용하는 것을 권장해요.

+ Recent posts