Meydan okuma 2: Coroutine ile gecikme
- Oyun Geliştirme kursu
- Orta seviye
- Ders 80/83
- 5 dk
WaitForSeconds ile gecikmeli mesaj yazdıran coroutine yazarsın.
Coroutine ve WaitForSeconds Kullanımı
Unity'de belirli bir süre bekleyip ardından bir eylemi çalıştırmak için Coroutine yapıları kullanılır. IEnumerator dönüş tipine sahip fonksiyonda yield return new WaitForSeconds(saniye); ifadesi ile akış duraklatılır ve süre bitiminde kaldığı yerden devam eder. Coroutine başlatmak için StartCoroutine() metodu çağrılır.
IEnumerator GecikmeliMesaj()
{
yield return new WaitForSeconds(2.0f);
Debug.Log("Süre doldu!");
}Uygulama Gecikme Süresini İncele
WaitForSeconds bekleme = new WaitForSeconds(saniye); oluştur ve Debug.Log("Beklendi: " + bekleme.seconds); ile yazdır.
Başlangıç kodu
using System;
public class WaitForSeconds
{
public float seconds;
public WaitForSeconds(float sec) { this.seconds = sec; }
}
public static class Debug
{
public static void Log(object message) => Console.WriteLine(message);
}
public class Program
{
public static void Main()
{
float saniye = 2.0f;
// WaitForSeconds olustur ve suresini konsola yazdir
}
}Örnek çözüm
using System;
public class WaitForSeconds
{
public float seconds;
public WaitForSeconds(float sec) { this.seconds = sec; }
}
public static class Debug
{
public static void Log(object message) => Console.WriteLine(message);
}
public class Program
{
public static void Main()
{
float saniye = 2.0f;
WaitForSeconds bekleme = new WaitForSeconds(saniye);
Debug.Log("Beklendi: " + bekleme.seconds);
}
}Beklenen çıktı
Beklendi: 2
Uygulama Aşamalı Akış Simülasyonu
Sırasıyla Debug.Log("Basladi"); ve ardından Debug.Log("Bitti"); yazdır.
Başlangıç kodu
using System;
public static class Debug
{
public static void Log(object message) => Console.WriteLine(message);
}
public class Program
{
public static void Main()
{
// Basladi ve Bitti mesajlarini sirayla yazdir
}
}Örnek çözüm
using System;
public static class Debug
{
public static void Log(object message) => Console.WriteLine(message);
}
public class Program
{
public static void Main()
{
Debug.Log("Basladi");
Debug.Log("Bitti");
}
}Beklenen çıktı
Basladi Bitti
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Unity'de bir Coroutine içerisinde kodun belirli bir saniye kadar duraklamasını sağlayan yield ifadesi hangisidir?
- yield return null;
- yield break;
- yield return new WaitUntil();
- yield return new WaitForSeconds(saniye); Doğru cevap
Açıklama: WaitForSeconds nesnesi yield return ile döndürüldüğünde belirtilen saniye kadar bekleme yapılır.
2 Coroutine'i Başlat
StartCoroutine(____());
StartCoroutine(GecikmeliGorev());
Açıklama: StartCoroutine metoduna çalıştırılacak IEnumerator fonksiyon çağrısı parametre olarak verilir.
3 Coroutine Kavramları
| Kavram | Anlamı |
|---|---|
IEnumerator |
Coroutine zorunlu dönüş tipi |
WaitForSeconds |
Belli saniye bekleten yield komutu |
StartCoroutine |
Coroutine çalıştırmayı başlatan çağrı |
yield return |
Coroutine'i geçici duraklatan ifade |