IEnumerator ve yield
- Oyun Geliştirme kursu
- Orta seviye
- Ders 44/83
- 4 dk
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
using System;
class Program
{
static void Main()
{
// returnType ve yieldState değerlerini tanımlayıp yazdır
}
}Örnek çözüm
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
yield return ____;
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ı |