CodeBlanks Logo Icon CodeBlanks

emit_signal

emit_signal ile sinyali yayınlamayı öğrenirsin.

Sinyali yayınlamak: emit ve emit_signal

Bir sinyali tetiklemek ve dinleyicilere duyurmak için yayım (emit) işlemi yapılır. Godot 4'te en yaygın yöntem sinyal_adi.emit() çağrısıdır; alternatif olarak nesne seviyesindeki emit_signal("sinyal_adi") metodu da kullanılabilir.

signal health_changed(new_health)

func take_damage(amount: int):
    health -= amount
    health_changed.emit(health)  # Sinyali tetikler

Bu satır çalıştığı an sinyale bağlı tüm fonksiyonlar sırayla yürütülür.

Parametrelerle sinyal yayını

Sinyal tanımlanırken belirtilen parametreler, emit() veya emit_signal() fonksiyonuna argüman olarak sırayla verilir.

signal score_added(points, player_id)

func add_score():
    score_added.emit(100, 1)
    # veya: emit_signal("score_added", 100, 1)

Parametre sayısı ve türü uyuşmazsa Godot hata verir veya uyarı üretir.

Uygulama Sinyal yayınla ve yakala

signal alert_triggered(msg) tanımla. _ready içinde bu sinyali _on_alert fonksiyonuna bağla ve alert_triggered.emit("Tehlike!") çağır. Fonksiyon konsola mesajı yazdırsın.

Başlangıç kodu

Player.cs
extends Node

signal alert_triggered(msg)

func _ready():
    # Bagla ve emit et

func _on_alert(msg):
    print(msg)

Örnek çözüm

Player.cs
extends Node

signal alert_triggered(msg)

func _ready():
    alert_triggered.connect(_on_alert)
    alert_triggered.emit("Tehlike!")

func _on_alert(msg):
    print(msg)

Beklenen çıktı

Tehlike!

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Godot 4'te 'oyun_bitti' adlı bir özel sinyali yayınlamak için en yaygın modern sözdizimi hangisidir?

  • trigger(oyun_bitti)
  • oyun_bitti.fire()
  • send_signal("oyun_bitti")
  • oyun_bitti.emit() Doğru cevap

Açıklama: Godot 4'te sinyal nesnelerinin doğrudan 'emit()' metodu vardır (ör. oyun_bitti.emit()).

2 Sinyal tetikle

Soru
signal level_up

func finish_quest():
    level_up.____()
Cevap
signal level_up

func finish_quest():
    level_up.emit()

Açıklama: Godot 4'te sinyali tetiklemek için sinyal nesnesi üzerinde .emit() çağrılır.

3 Yayınlama ve tetikleme terimleri

Kavram Anlamı
emit() Sinyali doğrudan tetikler
emit_signal İsimle sinyal yayınlama metodu
Argümanlar Dinleyicilere taşınan veri
Handler Sinyali karşılayan fonksiyon

Orta seviye bölümündeki tüm dersler