IENUMERATOR Metodu Aslında Sayaç Metodudur. Yani Sayacı Başlatırsınız Belirlediğiniz Süre Kadar Bekler Ve Süre Bittikten Sonra Yaptırmak İstediğiniz İşlemi Yapar.
Örnek Olarak 5 Saniyede Bir Skoru 3 Arttır Gibi Bir Örnek Verilebilir.
Benim Bunu Kullanmamın Nedeni Update Metoduna Çok Fazla Kod Yazmak İstememem
Ve Update Metodu Saniyede 60 Kere Okunan Bir Fonksiyondur. Buda Oyunlarda Performans Sorularına Yol Açıyor. Bu Nedenle Ienumerator Metodunu Kullanmayı Tercih Ediyorum.
Eğer Bir Butona Bu Metodu Uygulayacaksak Aşağıdaki Metot Örneğindeki Gibi Uygulayabiliriz.
public void Beklet() // Bu Metodu Butonlarda Çağıra bilirsiniz.
{
StartCoroutine(Bekle()); // Bu Kısımda IEnumerator Metodunu Başlatıyoruz.
}
IEnumerator Bekle()
{
// Düz Olan Değere Örnek
yield return new WaitForSeconds(5); // Bu Kısımda Metodun Kaç Saniye Bekleyeceğini // Söylüyoruz.
// 5 Kısmına Kaç Saniye Bekleyeceğini Yazıyoruz Eğer Yazacağınız Değer Noktalı ise ise
// Sonuna f Harfi Koyuyoruz.
// Noktalı Olan Değere Örnek
yield return new WaitForSeconds(3.75f);
// Bu Kısıma Süre Dolduktan Sonra Ne Yapılması Gerektiğini Yazıyoruz.
//Örnek
Debug.Log("Süre Tamamlandı");
}
TEMİZ HALİ
public void Beklet()
{
StartCoroutine(Bekle());
}
IEnumerator Bekle()
{
yield return new WaitForSeconds(5);
Debug.Log("Süre Tamamlandı");
}
Eğer Bu Fonksiyonu Döngü Olarak Yapmak İstersek Aşağıdaki Örnek Gibi Yapabilirsiniz.
void Start()
{
Beklet(); // Oyun Başlar Başlamaz Bekle Metodunu Çalıştırır.
}
public void Beklet() // Start Fonksiyonu Bunu Çalıştırır Ve Buda Bekle fonksiyonunu Çalıştırır.
{
StartCoroutine(Bekle());
}
IEnumerator Bekle()
{
yield return new WaitForSeconds(5); // Sürenin dolmasını Bekler.
Debug.Log("Süre Tamamlandı"); // 5 Saniyede Bir Console Kısmında Süre Bitti Yazar.
Beklet(); // süre Bittikten Sonra Yukarıdaki Beklet Fonksiyonunu Tekrar Çalıştırır.
}
Bu Şekilde Loop Yani Döngü Yapmış Oluruz.
Eğer Bu Fonksiyonda 2 Kere Süre Bekletmek istersek.
Void Update()
{
if (Input.GetKey(KeyCode.Space))
{
StartCoroutine(Bekle()); //Eğer Boşluk Tuşuna Basarsan Bekle Fonksiyonu Çalışır.
}
}
IEnumerator Bekle()
{
yield return new WaitForSeconds(5); // Sürenin dolmasını Bekler.
Debug.Log("1.Süre Bitti"); // 5 Saniye Bittiğinde Console Kısmında 1.Süre Bitti Yazar.
yield return new WaitForSeconds(1.7f); // Sürenin dolmasını Bekler.
Debug.Log("2.Süre bitti"); // 1.7 Saniye Bittiğinde Console Kısmında 2.Süre Bitti Yazar.
}
Burada Vermiş Olduğum Örneklerdeki Gibi Sizde Kullanabilirsiniz. Bu Yazdığım Örneklerle Kendinizi Kısıtlamayın Daha Değişik Şekillerde de Bu Fonksiyonu Kullanabilirsiniz.
Ienumerator Çok işinize Yarayacak Ve Çok Faydasını Göreceğiniz Bir Fonksiyondur.
Ienumertor Fonksiyonunu Kullanmanız İçin C# Dosyanızın En Üstünde Bulunan Kısma Yani Kütüphane Kısmı Deniyor Kütüphaneye using System.Collections; Kütüphanesini Yazmanız Gereklidir.
using System.Collections; Direk Bunu Kopyalayıp Kütüphane Kısmına (En Üst Kısıma) Yapıştırın Yoksa Ienumerator Fonksiyonu Çalışmaz Kod Hata Verir.