Unity Sahne Değiştirme


Unity Sahne Değiştirme

Merhaba arkadaşlar bu yazımda sizlerle Unity ile nasıl sahneler arası geçiş yapabileceğinizi göstereceğim bildiğiniz üzere oyunlar tek sahneden ziyade birden fazla sahneden oluşur. (Başlangıç sahnesi, ara sahneler, oyun sahnesi,...)

Sahneler arasında geçiş yapmak için iki adet yöntem vardır ve bunlardan birisi eski diğeri yeni yöntemdir.

İki yönteme de başlamadan önce ilk olarak sahneleri oyuna tanıtmamız gerekiyor bu yüzden ilk olarak yapmamız gereken şey;
"File > Build Settings" kısmına girmeniz gerekiyor.


Bu işlemi tamamladıktan sonra geçerli sahneyi eklemeniz gerekiyor.


"Add Open Scenes" Butonuna tıklayıp geçerli sahneyi ekleyebilirsiniz. Sahnelerimizi bu yöntem ile ekledikten sonra gelin sahneler arasında gezinme işleminin nasıl yapıldığına.

1. Yöntem - Application.LoadLevel(X);

Eski yöntem olan Application.LoadLevel(SahneNumarası & Sahne Adı) yöntemi ile gitmek istediğiniz sahneyi ayarlayabilir ve o sahneye geçiş yapabilirsiniz.
Bu yöntemi kullanmanız için bu kodu bir fonksiyona koyabilir ve o fonksiyonu bir butona tıklandığı zaman çekebilir ve sahneyi değiştirebilirsiniz.

Sahne Numarası ile Değiştirme


Application.LoadLevel(1); // Burada bulunan "1" sahnenin numarasıdır ve yukarıda eklediğimiz sahnede yanda çıkan numaradır.

Sahne Adı ile Değiştirme

Application.LoadLevel("Sahne1"); // Burada bulunan "Sahne1" sahne adıdır ve siz o sahneye ne ad verirseniz onu kullanmanız gerekir.

2. Yöntem - SceneManager

Unity sürekli gelişen ve değişen bir oyun motorudur belli başlı sistemi her ne kadar değişmese de zaman zaman bazı yerleş değişebiliyor ve artık 1. yöntem kullanımdan kalktı diyebiliriz, yani isterseniz kullanabilirsiniz ama 1. yöntem yerine şimdi anlatacağım 2. yöntemin kullanımı önerilen yöntemdir.

SceneManager kullanabilmek için ilk olarak kütüphanesini oyunun script dosyasına eklememiz gerekiyor.

using UnityEngine.SceneManagement; // Script dosyamızın en üstüne ekliyoruz.

Artık sahneyi değiştirmek için yapmamız gereken tek şey.

  SceneManager.LoadScene(1, LoadSceneMode.Single); 

veya

  SceneManager.LoadScene(1, LoadSceneMode.Additive);

kullanarak sahneleri değiştirmek. Şimdi gelelim bu ikisi arasındaki farka.
Single ile sahneyi değiştirdiğimiz zaman açık olan bütün sahneler kapatılıyor ve bizim aç komutunu verdiğimiz sahne açık kalıyor sadece, Additive de ise diğer sahneler kapatılmıyor ve arkaplanda hala çalışmaya devam ediyor.
Eğer sahne adı kullanarak değiştirmek istiyosanız 1 yazan yere tırnak içerisinde sahne adını yazabilir ve sahnenizi sahne adına göre değiştirebilirsiniz, örnek vermek gerekir ise "Sahne1" şeklinde.