Sistemul de Semnale (Signals) în Godot 4: Declarare, .connect() și .emit() în GDScript (Godot Engine)

Ghid complet pentru semnale în Godot 4: decuplarea logică între componente, declararea semnalelor tipizate, conectarea funcțiilor cu .connect() și emiterea cu .emit().

Sintaxă
signal viata_schimbata(noua_viata: int); viata_schimbata.emit(80)

Semnalele (Signals) reprezintă implementarea nativă a șablonului de proiectare Observer în Godot. Ele permit unui nod să anunțe că s-a întâmplat un eveniment (de exemplu: un jucător a fost rănit sau o ușă s-a deschis) fără ca acel nod să știe dinainte cine îl ascultă, menținând codul curat și complet decuplat.

Declararea și conectarea semnalelor în Godot 4
# Fisier: Jucator.gd
extends CharacterBody2D

# 1. Declararea unui semnal personalizat cu parametri tipizați:
signal viata_modificata(viata_ramasa: int, viata_max: int)
signal jucatorul_a_murit

@export var viata_maxima: int = 100
var viata_curenta: int = 100

func primeste_daune(valoare: int) -> void:
    viata_curenta = max(0, viata_curenta - valoare)
    
    # 2. Emiterea semnalului către toți ascultătorii conectați:
    viata_modificata.emit(viata_curenta, viata_maxima)

    if viata_curenta == 0:
        jucatorul_a_murit.emit()

----------------------------------------------------
# Fisier: BaraViataUI.gd
extends ProgressBar

@export var tinta_jucator: CharacterBody2D

func _ready() -> void:
    # 3. Conectarea sintaxei moderne Godot 4 (obiect_semnal.connect(callback)):
    tinta_jucator.viata_modificata.connect(_pe_viata_modificata)

func _pe_viata_modificata(viata_ramasa: int, viata_max: int) -> void:
    max_value = viata_max
    value = viata_ramasa
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Sistemul de Semnale (Signals) în Godot 4: Declarare, .connect() și .emit()

Ai o nelămurire despre utilizarea comenzii Sistemul de Semnale (Signals) în Godot 4: Declarare, .connect() și .emit() sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.