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

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ükler

Farklı 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.

🧠 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!