Unity Eğitim
Dersler
Forum Sınav Merkezi Premium 💎
C# Dersleri

Unity'de WaitForSeconds() ile Gecikme Ekleme: Kolay Anlatım

Paylaşan: Unity Eğitim 12 September 2025 3 dakika okuma 104 görüntülenme

Merhaba Unity geliştiricileri! Bu eğitimde, Unity oyunlarınızda olaylar arasında gecikme yaratmak için kullanılan WaitForSeconds() fonksiyonunu detaylı olarak inceleyeceğiz. Oyun geliştirmede zamanlama, animasyonlar, efektler ve oyun mantığının doğru çalışması için hayati önem taşır. WaitForSeconds(), bu zamanlamayı kontrol etmemizi sağlayan güçlü bir araçtır.

WaitForSeconds() Fonksiyonu Nedir?


WaitForSeconds(), Unity'nin System.Collections isim alanında bulunan bir fonksiyondur. Belirli bir süre (saniye cinsinden) bekledikten sonra kodun yürütülmesine devam etmesini sağlar. Bu fonksiyon, Coroutine'lar ile birlikte kullanılır. Coroutine'lar, kodun belirli bir noktada duraklatılıp daha sonra devam etmesine olanak tanır. Bu, oyunun diğer bölümlerinin çalışmaya devam etmesini sağlarken, belirli bir görevin gecikmeli olarak çalıştırılmasını mümkün kılar.

Coroutine'lar ve WaitForSeconds()


Coroutine'lar, IEnumerator tipinde bir fonksiyon ile tanımlanır. WaitForSeconds() ise, bu Coroutine'ın belirli bir süre beklemesini sağlar. Aşağıdaki örnek, 3 saniye bekledikten sonra bir mesaj yazdıran basit bir Coroutine göstermektedir:
using System.Collections;
using UnityEngine;

public class WaitForSecondsExample : MonoBehaviour
{
void Start()
{
StartCoroutine(WaitAndPrint());
}

IEnumerator WaitAndPrint()
{
yield return new WaitForSeconds(3f);
Debug.Log("3 saniye bekledikten sonra bu mesaj yazdırıldı!");
}
}


Bu kodda, StartCoroutine() fonksiyonu, WaitAndPrint() isimli Coroutine'ı başlatır. yield return new WaitForSeconds(3f); satırı, 3 saniyelik bir bekleme oluşturur. yield return ifadesi, Coroutine'ın bu noktada duraklamasını ve 3 saniye sonra devam etmesini sağlar. Debug.Log() fonksiyonu ise, bekleme süresi bittikten sonra mesajı konsola yazdırır.

WaitForSeconds() Kullanım Örnekleri


1. Animasyon Gecikmesi


Bir animasyonun başlangıcını veya bitişini diğer bir olayla senkronize etmek için WaitForSeconds() kullanabilirsiniz. Örneğin, bir karakterin konuşma animasyonundan sonra konuşma balonunun görünmesini geciktirebilirsiniz:
IEnumerator ShowSpeechBubble()
{
// Animasyonun bitmesini bekle
yield return new WaitForSeconds(2f); // Animasyon 2 saniye sürüyorsa

speechBubble.SetActive(true);
}


2. Oyuncu Hareketi Gecikmesi


Oyuncunun bir hareketi tamamladıktan sonra bir sonraki harekete geçmesini geciktirmek için de kullanabilirsiniz. Bu, oyunun daha akıcı ve gerçekçi görünmesini sağlar:
IEnumerator PlayerMove()
{
// Hareket işlemleri
yield return new WaitForSeconds(1f);
// Sonraki hareket
}

3. Efekt Gecikmesi


Parçacık efektleri veya diğer görsel efektleri belirli bir süre sonra göstermek veya gizlemek için kullanabilirsiniz. Bu, efektlerin daha etkili bir şekilde sunulmasını sağlar.
IEnumerator ShowEffect()
{
yield return new WaitForSeconds(0.5f);
effect.SetActive(true);
yield return new WaitForSeconds(2f);
effect.SetActive(false);
}

İleri Seviye Kullanım


WaitForSecondsRealtime(): Bu fonksiyon, WaitForSeconds()'a benzer şekilde çalışır, ancak oyunun duraklatılması durumunda bile gerçek zamanlı olarak beklemeyi sürdürür. Oyunun duraklatılmasına rağmen zamanın geçmesini istediğiniz durumlarda kullanışlıdır.

Önemli Not: WaitForSeconds() ve diğer zamanlama fonksiyonlarını kullanırken, performansı göz önünde bulundurmanız önemlidir. Çok fazla Coroutine kullanmak oyun performansını olumsuz etkileyebilir. Gereksiz Coroutine'lardan kaçınmak ve performansı optimize etmek için kodunuzu düzenli olarak gözden geçirmeniz önerilir.

Sonuç


WaitForSeconds() fonksiyonu, Unity oyun geliştirmede zamanlamayı kontrol etmenin basit ve etkili bir yoludur. Bu eğitimde öğrendiğiniz bilgileri kullanarak, oyunlarınıza daha fazla gerçekçilik ve akıcılık katabilirsiniz. Unutmayın, pratik yapmak mükemmelliğe götürür! Yeni projelerinizde bu fonksiyonu deneyerek, kullanımını daha iyi anlayabilirsiniz.

 

🧠 Ders Sonu Değerlendirme Testi

Dersi tamamladıktan sonra bilgilerinizi test edin ve ekstra puanlar kazanın.

🔥 +50 XP Ödül
🔒

Sınava Katılmak İçin Giriş Yapın

Bu ders sonu testini çözebilmek, bilginizi test edip **+50 XP** kazanmak ve **Sınav Şampiyonu** rozetinin kilidini açmak için üye girişi yapmalısınız.

Yorumlar (0)

Yorum yazabilmek ve derslere katkıda bulunabilmek için giriş yapmalısınız.

İlk yorumu siz yapın!