이 카테고리는 고도 엔진(Godot Engine) 관련 문법을 기록하고 저장하기 위해 만든 공간입니다.
이번에는 함수: _init(), _ready(), _process()의 차이'입니다.
게임 속 캐릭터가 태어나서, 장비를 챙겨 입고, 매 순간 뛰어다니는 과정은 모두 정해진 순서대로 일어납니다. 고도 엔진에서는 이를 '생명주기(Life Cycle)'라고 부르며, 이 세 가지 핵심 함수만 이해해도 게임의 흐름을 완벽하게 제어할 수 있습니다.
1. _init(): 메모리에 태어나는 순간 (탄생)
_init()은 객체가 메모리에 처음 생성될 때, 즉 코드를 통해 .new()를 호출하는 바로 그 순간에 가장 먼저, 단 한 번 실행되는 초기화 함수입니다. 아직 게임 화면(씬 트리)에 나타나기 전이므로 다른 노드를 찾을 수는 없지만, 변수의 초기값을 설정할 때 매우 유용합니다.
class_name Player extends Node2D
var hp: int
# 1. 객체가 생성될 때 가장 먼저 실행됩니다.
func _init():
hp = 100
print("플레이어가 메모리에 생성되었습니다! 체력: ", hp)
2. _ready(): 씬에 입장하고 준비 완료 (출격)
_ready()는 노드와 그 아래에 있는 자식 노드들이 무대(씬 트리)에 완전히 올라와서 화면에 나타날 준비가 끝났을 때 단 한 번 실행됩니다. 앞서 배운 get_node()나 $, % 기호를 이용해 다른 노드를 무사히 불러오고, 게임 시작 직전의 최종 세팅을 하기에 가장 완벽한 타이밍입니다.
func _ready():
# 2. 씬에 배치된 후 실행되므로 자식 노드를 안전하게 찾을 수 있습니다.
var weapon_node = $Weapon
weapon_node.equip()
print("무기 장착 완료! 게임을 시작합니다.")
3. _process(delta): 매 프레임마다 쉬지 않고 실행 (일상)
_process()는 게임이 실행되는 동안 매 프레임(보통 1초에 60번)마다 끊임없이 반복해서 실행되는 함수입니다. 캐릭터를 이동시키거나, 플레이어의 조작을 실시간으로 감지할 때 주로 사용합니다.
괄호 안의 delta는 이전 프레임과 현재 프레임 사이의 '시간 차이'로, 컴퓨터 성능에 상관없이 이동 속도를 일정하게 보정해 주는 중요한 마법의 숫자입니다.
func _process(delta):
# 3. 매 프레임마다 실행됩니다.
# 캐릭터를 오른쪽(x축)으로 1초에 100픽셀씩 부드럽게 이동시킵니다.
position.x += 100 * delta
한눈에 보는 생명주기 핵심 요약
| 함수명 | 실행 타이밍 | 실행 횟수 | 게임 속 사용 예시 |
| _init() | 스크립트 객체가 메모리에 생성될 때 | 단 1번 | .new()로 객체를 생성할 때 기본 능력치를 할당할 때 |
| _ready() | 노드가 씬 트리에 들어와 준비를 마쳤을 때 | 단 1번 | 게임 시작 시 UI 텍스트를 업데이트하거나, 자식 노드를 찾아 변수에 저장할 때 |
| _process(delta) | 매 프레임마다 (화면이 그려질 때마다) | 무한 반복 | 캐릭터가 키보드 방향키를 누른 쪽으로 계속 이동하게 할 때 |
'게임 > 고도엔진 문법' 카테고리의 다른 글
| 14. [고도 엔진] 편리한 노드 할당자 @onready 키워드 (0) | 2026.07.03 |
|---|---|
| 12. [고도 엔진] 노드(Node) 제어의 기초: $, get_node() 사용법 (0) | 2026.07.01 |
| 11. [고도 엔진] 클래스(class_name)와 인스턴스 이해하기 (0) | 2026.07.01 |