CodeBlanks Logo Icon CodeBlanks

IEnumerator ve yield

IEnumerator ve yield return null kullanımını öğrenirsin.

IEnumerator ve yield return null

Unity'de bir metodun coroutine olarak tanınabilmesi için System.Collections isim alanındaki IEnumerator arayüzünü döndürmesi ve içerisinde en az bir yield ifadesi bulundurması zorunludur.

using System.Collections;

IEnumerator StepRoutine() {
    // Bir kare bekle
    yield return null;
}

yield return null; komutu Unity'ye mevcut karenin bittiğini, metodun bir sonraki karede bu satırın hemen ardından devam edeceğini bildirir.

yield break ile erken çıkış

Bir coroutine çalışırken belirli bir koşul sağlandığında işlemi erken sonlandırmak için yield break; ifadesi kullanılır. Normal metotlardaki return; gibi çalışarak coroutine döngüsünü tamamen kapatır.

IEnumerator HealthMonitor(int hp) {
    if (hp <= 0) {
        yield break; // Can bittiğinde coroutine durur
    }
    yield return null;
}

Bu sayede gereksiz döngü hesaplamalarının önüne geçilir ve bellek optimizasyonu sağlanır.

Uygulama Dönüş ve yield durumunu yazdır

returnType değişkenine "IEnumerator", yieldState değişkenine "null" ata. Ekrana Return: IEnumerator | Yield: null yazdır.

Başlangıç kodu

Player.cs
using System;

class Program
{
    static void Main()
    {
        // returnType ve yieldState değerlerini tanımlayıp yazdır
    }
}

Örnek çözüm

Player.cs
using System;

class Program
{
    static void Main()
    {
        string returnType = "IEnumerator";
        string yieldState = "null";
        Console.WriteLine("Return: " + returnType + " | Yield: " + yieldState);
    }
}

Beklenen çıktı

Return: IEnumerator | Yield: null

Soru ve cevaplar

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

1 Bir coroutine fonksiyonunda tam olarak bir sonraki kareye (next frame) kadar beklemek için hangi ifade yazılır?

  • return 0;
  • yield break;
  • Thread.Sleep(1000);
  • yield return null; Doğru cevap

Açıklama: yield return null, coroutine'in mevcut kareyi pas geçip bir sonraki karede devam etmesini sağlayan standart ifadedir.

2 Bir sonraki kareye kadar bekle

Soru
yield return ____;
Cevap
yield return null;

Açıklama: Bir kare beklemek için yield return null ifadesi kullanılır.

3 IEnumerator ve yield terimleri

Kavram Anlamı
IEnumerator Coroutine dönüş tipi arayüzü
yield return null Sonraki kareye kadar bekletir
yield break Coroutine'i anında sonlandırır
System.Collections IEnumerator'ı barındıran C# ad alanı

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