GDScript의 문법 설탕: `@onready`와 `$`로 코드 간결하게 쓰기 🚀
인디 게임 개발을 위한 GDScript의 문법 설탕으로 간편한 노드 초기화와 접근 방법을 알아보세요.
GDScript에서 @onready
와 $
사용해 코드 간결하게 쓰기 🚀
Godot에서 스크립트를 작성하다 보면 자주 쓰는 코드가 몇 가지 있습니다. 특히, get_node()
를 사용해 노드에 접근하는 코드는 빈번하게 등장하는데, 이를 좀 더 간단하게 만들어주는 “문법 설탕(Syntactic Sugar)”이 GDScript에는 두 가지가 있습니다. 바로 @onready
와 $
입니다. 이 두 가지를 잘 활용하면 코드가 훨씬 깔끔해지고 가독성이 좋아집니다. 오늘은 그 사용법을 함께 살펴보겠습니다! 🎮✨
문법 설탕(Syntactic Sugar)이란?
“문법 설탕”은 코드의 기능을 그대로 유지하면서, 더 읽기 쉽고 작성하기 편하게 만들어 주는 코드 축약 방법입니다. GDScript의 @onready
와 $
도 이에 해당하며, Godot 엔진을 사용하는 개발자라면 필수로 알아두면 좋습니다.
@onready
로 초기화 간소화하기
@onready
는 _ready()
함수가 호출되기 직전에 변수나 노드를 초기화할 때 사용됩니다. 보통 _ready()
함수 내부에서 초기화할 노드를 미리 정의하고 싶을 때 유용합니다. 예를 들어, 아래와 같이 작성할 수 있습니다.
예시: @onready
사용 전후 비교
1
2
3
4
# @onready 없이 사용하는 경우
var sprite2d
func _ready():
sprite2d = get_node("Sprite2D")
위와 같이 작성하면 sprite2d
를 _ready()
함수 내에서 초기화해야 합니다. 하지만 @onready
를 사용하면 다음과 같이 더 간단하게 표현할 수 있습니다:
1
2
# @onready 사용
@onready var sprite2d = get_node("Sprite2D")
이렇게 하면 _ready()
함수 밖에서도 초기화가 가능해지고, 코드가 한 줄로 간결해집니다.
$
로 get_node()
간단하게 쓰기
$
는 get_node()
의 단축 표기로, 자주 쓰는 get_node("NodeName")
를 더 짧고 직관적으로 표현할 수 있습니다. 특히, 코드가 길어질수록 가독성을 높이는 데 큰 도움이 됩니다.
예시: $
사용
1
2
@onready var sprite2d = get_node("Sprite2D")
@onready var sprite2d = $Sprite2D # 더 간결하게 쓰기!
$
와 @onready
의 조합으로 코드 최적화하기
@onready
와 $
를 함께 사용하면 더욱더 간편하게 노드에 접근할 수 있습니다. 경로가 깊은 노드에도 $
를 사용할 수 있기 때문에 코드 작성이 훨씬 수월해집니다.
예시: $
와 @onready
조합 사용
1
2
@onready var animation_player = get_node("ShieldBar/AnimationPlayer")
@onready var animation_player = $ShieldBar/AnimationPlayer # `$`를 활용해 더 간단하게
위 코드처럼 $
기호를 활용해 긴 경로를 짧게 작성하면 코드가 직관적이고, 오류 발생 가능성도 줄어듭니다.
실용적인 사용 사례와 팁
@onready
와 $
는 다음과 같은 경우에 특히 유용합니다:
- _ready() 함수에서만 사용할 노드 초기화:
_ready()
함수 내에서만 사용할 노드를 미리 초기화할 때,@onready
로 간단하게 정의할 수 있습니다. - 짧은 경로의 노드:
$
를 활용하면 경로가 짧은 노드 접근이 간단해지며, 긴 경로에서는get_node()
를 사용하는 것이 더 가독성에 좋을 수 있습니다.
참고사이트
📘 godot 공식홈페이지 node path shorthand 검색
결론
@onready
와 $
는 코드 작성과 가독성을 높이는 데 아주 유용한 도구입니다. 특히, 반복적으로 사용하는 노드 초기화와 접근 코드를 간단하게 바꿔줌으로써 개발 시간을 절약하고, 코드를 더 명확하게 만들어 줍니다. 지금 바로 여러분의 프로젝트에 적용해 보세요! 🙌🌟
더 많은 개발 팁과 경험담이 필요하신 분들은 제 소셜 채널도 확인해 주세요!
혹시라도 저에 대해서 더 알고 싶으시다면! 🕵️🍻 About Redping