Özet - Signal
- Oyun Geliştirme kursu
- Orta seviye
- Ders 72/83
- 4 dk
Signal kullanımını bir özet görevle pekiştirirsin.
Özet: Godot'ta Signal Mimarisi
Bu grupta Godot'un en temel iletişim yapısı olan Signal sistemini öğrendin: yerleşik sinyaller (pressed, timeout), bağlantı kurma (connect, Callable), özel sinyal tanımlama (signal) ve yayınlama (emit).
signal coin_collected(val: int)
func _ready():
coin_collected.connect(_on_coin)
coin_collected.emit(5)
func _on_coin(val: int):
print("Kazanilan altin: ", val)Sinyaller sayesinde sahnelerindeki düğümler birbirini doğrudan referans almadan temiz bir şekilde haberleşir.
Uygulama Eksiksiz sinyal sistemi kur
Script'te signal skor_artti(puan) tanımla. _ready içinde bu sinyali _on_skor fonksiyonuna bağla ve skor_artti.emit(10) ile tetikle. _on_skor(puan) fonksiyonunda print("Yeni skor: ", puan) ile yazdır.
Başlangıç kodu
extends Node
# Sinyal tanimi buraya
func _ready():
# Bagla ve yayinla
func _on_skor(puan):
# Puani yazdirÖrnek çözüm
extends Node
signal skor_artti(puan)
func _ready():
skor_artti.connect(_on_skor)
skor_artti.emit(10)
func _on_skor(puan):
print("Yeni skor: ", puan)Beklenen çıktı
Yeni skor: 10
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Signal iş akışının baştan sona doğru sırası hangisidir?
- Tanımlama (signal) -> Bağlama (connect) -> Yayınlama (emit) Doğru cevap
- Yayınlama (emit) -> Tanımlama (signal) -> Bind
- Emit -> Tanımlama -> Disconnect -> Connect
- Bağlama (connect) -> Silme -> Tanımlama -> Emit
Açıklama: Doğru akış önce sinyalin tanımlanması, ardından dinleyici fonksiyona bağlanması ve olay anında emit edilmesidir.
2 Sinyal döngüsünü tamamla
signal game_started
func setup():
game_started.____(_on_game_started)
game_started.emit()
signal game_started
func setup():
game_started.connect(_on_game_started)
game_started.emit()
Açıklama: Sinyal yayınlanmadan önce dinleyici fonksiyona connect metodu ile bağlanır.
3 Signal özeti eşleştirmesi
| Kavram | Anlamı |
|---|---|
signal my_signal |
Özel sinyal tanımı |
my_signal.connect(fn) |
Fonksiyonu dinleyici yapar |
my_signal.emit() |
Sinyali tetikleyip yayınlar |
Button.pressed |
Yerleşik UI sinyali |