Ciclul de Viață al Nodurilor: _ready(), _process(delta) și _physics_process(delta) în GDScript (Godot Engine)

Ghid complet pentru ciclul de execuție al nodurilor în Godot: momentul de montare cu _ready(), bucla grafică variabilă _process și simularea fizică la pas fix _physics_process.

Sintaxă
func _process(delta: float) -> void: ... | func _physics_process(delta: float) -> void: ...

Fiecare nod din Godot parcurge un ciclu de viață bine definit, apelat automat de motorul SceneTree. Înțelegerea diferenței dintre _process și _physics_process este esențială pentru a evita erorile de sincronizare și mișcările sacadate (stuttering).

Funcție nativă Frecvență de apel Când se folosește?
_enter_tree() O singură dată, la atașarea nodului în arbore. Înregistrare la manageri globali înainte ca copiii să fie gata.
_ready() O singură dată, după ce toți copiii nodului sunt gata. Inițializare de componente, conexiuni de semnale, cache de noduri.
_process(delta) La fiecare cadru grafic desenat (framerate variabil: 60, 144, 240 FPS). Actualizări vizuale, rotații cosmetice, interfețe grafice, citire de input non-fizic.
_physics_process(delta) La un interval fix de timp (implicit exact de 60 de ori pe secundă). Orice operațiune cu corpuri fizice, gravitație, deplasare cu move_and_slide.
Exemplu de rotație continuă a unui obiect în _process
extends Node2D

@export var viteza_rotatie_grade: float = 90.0 # 90 de grade per secundă

func _ready() -> void:
    print("Nodul %s a fost încărcat complet în scenă!" % name)

func _process(delta: float) -> void:
    # Multiplicăm ÎNTOTDEAUNA cu 'delta' (fracțiunea de secundă scursă)!
    # Astfel viteza este IDENTICĂ pe un ecran de 60Hz ca pe unul de 144Hz:
    rotation += deg_to_rad(viteza_rotatie_grade) * delta