Unity Coroutine Nedir? Nasıl Kullanılır?

ücretsiz unity eğitim serisi

Coroutine Nedir?

“Bir program, yürütmeyi duraklatma ve denetimi Unity’ye geri döndürme yeteneğine sahip olan ancak daha sonra kaldığı yerden devam edebilen bir işlev gibidir.”

Yukarıda Unity dökümantasyonundaki ifadeyi görüyorsunuz. Daha basit ifade etmek gerekirse Coroutine’ler programın ana akışından bağımsız olarak çalışacak bir işlev oluşturmaya yarar. Örneğin bir nesnenin rengini zamana bağlı olarak değiştirmek isteyebilirsiniz.

Coroutine Nasıl Kullanılır?

Öncelikle IEnumerator’ü  fonksiyon tipi olarak kullanmayı unutmayın ve yalnızca StartCoroutine(Coroutine adı)  şeklinde bir coroutine başlatabiliriz. Ayrıca IEnumerator fonksiyon tipi bir yield return döndürmek zorundadır. Yield ifadesi ile geriye WaitForSeconds fonksiyonlar döndürebiliriz.

void Start()
{
    StartCoroutine(DortSaniyeSonraAdimiYaz());
}

IEnumerator DortSaniyeSonraAdimiYaz()
{
    yield return new WaitForSeconds(4); // 4 saniye bekle
    Debug.Log("Mert ^^");
}

Ayrıca WaitUntil ifadesi ile bir şart doğru olana kadar bekleyebiliriz. Aşağıdaki örnekte Mert ifadesi yazılana kadar işlev durdurulacaktır. Mert ifadesi yazıldıktan sonra Öztürk ifadesi yazılacaktır.

bool isimYazildiMi = false;

void Start()
{
    StartCoroutine(AdimiYazincaSoyadimiDaYaz());
    StartCoroutine(DortSaniyeSonraAdimiYaz());
}

IEnumerator DortSaniyeSonraAdimiYaz()
{
    yield return new WaitForSeconds(4);
    Debug.Log("Mert^^");
    isimYazildiMi = true;
}

IEnumerator AdimiYazincaSoyadimiDaYaz()
{
    yield return new WaitUntil(() => isimYazildiMi == true); // isim yazılana kadar bekle

    Debug.Log("Öztürk");

}