Unity Singletonda Sahne Değişimini Kontrol Etme

Unity Singeletonda Sahne Değişimini Kontrol Etme

Unity Singeletonda Sahne Değişimini Kontrol Etme

Hepinize merhaba arkadaşlar bu yazımda singeleton scriptlerde sahne değişimlerini algılamayı anlatacağım. Biliyorsunuz ki Unity de Awake ve Start gibi fonksiyonlar sadece sahne yüklendiği zamanlarda çalışıyor ve singeleton scriptlerde bir defa çalıştıktan sonra sahne kaç defa değişirse değişsin tekrar çalışmıyorlar. Aşağıda anlatacağım yöntem sayesinde singeleton scriptlerinizde sahne değiştiği zaman çalışması gereken kodlarınızı çalıştırabileceksiniz.

İlk olarak projemize aşağıdaki Unity kütüphanesini "using" kullanarak dahil ediyoruz.

using UnityEngine.SceneManagement; // Sahne değiştirmek vb. gibi işlemderde kullandığımız kütüphanemiz.

Daha sonra aşağıdaki kodlar ile sahnenin değişip değişmediğini algılayabiliriz.

private void OnEnable()
  {
    SceneManager.sceneLoaded += OnSceneLoad; // Sahne değişimini yakaladığımız kod.
  }

  void OnSceneLoad(Scene scene, LoadSceneMode mode) // Değişen sahnenin sonucunda çağırılan fonksiyonumuz.
  {
    Debug.Log(scene.name); // Sahne değiştikten sonra yapılmasını istediğimiz işlemleri buraya yazıyoruz.
    // Burada scene.name komutu ile açılan sahnenin adını çağırabilirsiniz.
    // scene.buildIndex komutu ile açılan sahnenin sahne numarasını çağırabilirsiniz.
    // mode ile sahnenin hangi modda açıldığını bulabilirsiniz.
 
  }
  
  private void OnDisable()
  {
    SceneManager.sceneLoaded -= OnSceneLoad; // Sahne değişimini yakaladığımız kodu sonlandırğımız kod parçacığı.
  }

Evet arkadaşlar kodlar ile birlikte açıklamalarını da verdim. Burada dikkat etmeniz gereken nokta ise bu komutların Action ile çalışmasıdır ve bu yüzden OnEnable ve OnDisable komutlarını kullanmanız ve oyununuzun performansını etkilememesi için OnDisable komutunun kullanılmasının unutulmaması gerekmektedir.

Aklınıza takılan herhangi bir nokta olursa aşağıdaki yorum kısmından yorum olarak sorabilirsiniz. İyi günler dilerim.