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
Î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.