Unity'de Sahne Yönetimi: SceneManager.LoadScene() Metodu ile Sahne Değiştirme
Paylaşan: Unity Eğitim
04 September 2025
4 dakika okuma
72 görüntülenme
Unity oyun geliştirmede, oyuncuların farklı ortamlara geçiş yapmasını sağlamak için sahneler (scenes) kullanılır. Oyunun başlangıç sahnesinden bir oyun menüsüne, oyunun farklı bölümlerine veya bitiş ekranına geçiş yapmak için SceneManager.LoadScene() metodu kullanılır. Bu metod, Unity'nin yerleşik sahne yönetim sisteminin temel bir parçasıdır ve oyun geliştirmede sıklıkla kullanılır.
SceneManager.LoadScene() Metodunun Temelleri
SceneManager.LoadScene() metodu, belirtilen sahneyi yüklemek için kullanılır. Metod, sahne adını (string) veya sahne indeksini (integer) parametre olarak alabilir. Sahne adını kullanmak genellikle daha okunabilir ve hata ayıklamada daha kolaydır.Sahne Adı ile Yükleme
Sahne adını kullanarak yükleme yapmak için, sahnenizin Unity'deki hiyerarşik yapıda adı ile aynı olan bir string değeri metodun parametresi olarak vermeniz gerekir. Örneğin, "Level1" adlı bir sahneyi yüklemek için:
SceneManager.LoadScene("Level1");Sahne İndeksi ile Yükleme
Sahne indeksini kullanarak yükleme yapmak, sahnelerin projede sıralandığı indeksi kullanır. Bu yöntem, sahne adlarının değişmesi durumunda sorun yaşanmasını engeller ancak kodun okunabilirliğini azaltabilir. İndeks 0'dan başlar.
SceneManager.LoadScene(0); // 0. indeksteki sahneyi yüklerFarklı Yükleme Modları
SceneManager.LoadScene() metodu, farklı yükleme modlarını destekler. Bu modlar, sahnelerin nasıl yüklendiğini ve oyunun davranışını etkiler.LoadSceneMode.Single
Bu, varsayılan yükleme modudur. Mevcut sahne boşaltılır ve yeni sahne yüklenir. Bu, çoğu durumda en uygun yöntemdir.
SceneManager.LoadScene("Level2", LoadSceneMode.Single);LoadSceneMode.Additive
Bu mod, yeni sahneyi mevcut sahneye ekler. Her iki sahne aynı anda aktif olur. Bu, oyun içinde bazı öğeleri dinamik olarak eklemek veya oyunun belirli bölümlerini ayrı sahnelerde yönetmek için kullanışlıdır. Örneğin, bir oyun menüsü sahnesini ana oyun sahnesine ekleyebilirsiniz.
SceneManager.LoadScene("MainMenu", LoadSceneMode.Additive);SceneManager.LoadScene() Metodunda Hata Ayıklama
Sahne yükleme işlemlerinde hatalar meydana gelebilir. Örneğin, yanlış bir sahne adı veya indeks girilmesi, sahne dosyasının eksik olması veya diğer hatalar nedeniyle sahne yüklenemeyebilir. Bu hataları tespit etmek için Unity'nin hata konsolunu kullanabilirsiniz. Ayrıca, sahne yükleme işlemini
try-catch bloğu içine alarak olası hataları yakalayabilirsiniz.
try
{
SceneManager.LoadScene("Level3");
}
catch (Exception e)
{
Debug.LogError("Sahne yükleme hatası: " + e.Message);
}Performans Optimizasyonu
Büyük sahneleri yüklemek zaman alabilir ve oyunun performansını etkileyebilir. Performansı iyileştirmek için aşağıdaki ipuçlarını kullanabilirsiniz:
- Sahneleri optimize edin: Gereksiz oyun nesnelerini sahneden kaldırın ve performansı etkileyebilecek gereksiz işlemleri azaltın.
- Asenkron yükleme kullanın:
SceneManager.LoadSceneAsync()metodu, sahneleri asenkron olarak yükleyerek ana oyun döngüsünü bloke etmez. Bu, oyunun donmasını önler. - Yükleme ekranları kullanın: Büyük sahneleri yüklerken oyuncunun beklemesini azaltmak için bir yükleme ekranı gösterin.
SceneManager.LoadSceneAsync() Metodu
Daha iyi performans için
SceneManager.LoadSceneAsync() kullanılmalıdır. Bu metod sahneyi asenkron olarak yükler ve ilerlemeyi takip etmenizi sağlar. Bu, yükleme işlemi tamamlanana kadar oyunun donmasını engeller ve kullanıcı deneyimini iyileştirir.AsyncOperation asyncLoad = SceneManager.LoadSceneAsync("Level4");
while (!asyncLoad.isDone)
{
Debug.Log("Yükleme yüzdesi: " + asyncLoad.progress * 100 + "%");
// Yükleme ekranı güncellemeleri burada yapılabilir
yield return null;
}Bu örnek,
asyncLoad.progress kullanarak yükleme işleminin ilerlemesini takip eder ve ilerleme yüzdesini konsola yazar. Bu bilgiyi bir yükleme çubuğu gibi kullanıcı arayüzü öğelerini güncellemek için kullanabilirsiniz.[YOUTUBE_VIDEO_BURAYA]
Özet
SceneManager.LoadScene() metodu, Unity oyun geliştirmede sahneler arasında geçiş yapmak için temel bir araçtır. Farklı yükleme modlarını ve performans optimizasyon tekniklerini anlamak, daha verimli ve kullanıcı dostu oyunlar oluşturmanıza yardımcı olacaktır. SceneManager.LoadSceneAsync() kullanarak asenkron yükleme yapmak, oyununuzun akıcılığını ve performansını önemli ölçüde artıracaktır. ← Önceki yazı
Unity'de Quaternion.Slerp() ile Düzgün Dönüşler Oluşturma
Sonraki yazı →
Unity ile Oyunlardan Reklam Geliri Elde Etmenin 7 Yolu (2026
🧠 Ders Sonu Değerlendirme Testi
Dersi tamamladıktan sonra bilgilerinizi test edin ve ekstra puanlar kazanın.
Yorumlar (0)
İlk yorumu siz yapın!