CodeBlanks Logo Icon CodeBlanks

Meydan okuma 2: Coroutine ile gecikme

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

Player.cs
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

Player.cs
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

Player.cs
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

Player.cs
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

Soru
StartCoroutine(____());
Cevap
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

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