Unity Yeniden Kullanılabilir Sahne Değiştirme Fonksiyonu Yapımı

Unity

Unity Yeniden Kullanılabilir Sahne Değiştirme Fonksiyonu Yapımı

Merhaba arkadaşlar bu yazımda sizlere Unity ile oyun geliştirirken sürekli kod yazmak yerine tek bir fonksiyon ile her yerde sahne nasıl değiştirilebilir onu anlatacağım.
Bildiğiniz gibi yazılım ilk kuralıdır kendini tekrar etmeme kuralı işte bu yüzden bizde şimdi göstereceğim sahne değiştirme kodu sayesinde oyununuzu kodlarken sürekli olarak farklı sahneler için ayrı ayrı sahneyi yazmamız gerekmeyecek yani kendimizi tekrar etmeyeceğiz.

İlk olarak "SahneDegistir" adında bir script oluşturalım ve ardından aşağıdaki gibi kodlarımızı yazıyoruz.

using UnityEngine;
using UnityEngine.SceneManagement;
public class SahneDegistir : MonoBehaviour
{
    
    public void SahneDegistirr(int gidilecekSahne)
    {
        SceneManager.LoadScene(gidilecekSahne, LoadSceneMode.Single);
    }
}

Aslında buradaki kodların çalışma mantığı çok basit ve genel olarak yazılım ile uğraşan herkes bu tarzda bir kullanım gerçekleştirecektir ama dikkat etmeyenler veya farkında olmayanlar için biraz üstünde duralım istedim.

Kullanımına gelecek olursak artık bu scripti istediğiniz bütün sahnelerde kullanabilirsiniz ve oldukça basittir.
Unity üzerinden kullanacağınız sahnede Hiyerarşi kısmında "Create Empty" deyin ve adını SahneDegistir yada ne isterseniz onu koyun, ardından yazdığınız scripti sürükleyin ve butonlara bu SahneDegiştiri Hiyerarşiden sürükleyip kullanabilirsiniz.

Hiyerarşi


Hiyerarşi de "Create Empty" deyip adını veriyoruz ben "SahneDegistir" Yaptım.

script

Oluşturduğumuz objenin içine scripti sürükle bırak yapıyoruz.

Buton

Butonumuzda ilk olarak + ya basıyor ve oluşan yerde none kısmına hiyerarşide oluşturduğumuz objeyi sürüklüyor sonra Runtime kısmının yanındaki yerden scriptimizi seçip oradan da SahneDegistir fonksiyonunu seçiyoruz. Altta çıkan sayı yazma yerine hangi sahneye gitmek istediğimizi yazıyoruz ve o sahneye geçiyoruz.
Bu şekilde kullandığımız kod ile artık sürekli olarak sahne değiştirme kodu yazmadan bu scriptteki koda erişerek sahnemizi değiştirebiliriz.
Eğer başka bir scriptten bu scripte erişmek istiyorsak da gelin bunun için basit bir kod yazalım ve görelim.

using UnityEngine;
public class Script2 : MonoBehaviour
{
    public GameObject sahneDegistirScript;
    void SahneDegistirmeyeEris()
    {
        var sahneDegistir = sahneDegistirScript.GetComponent<SahneDegistir>();
        sahneDegistir.SahneDegistirr(5);
    }
}

Yukarıdaki kodlarda ne yaptık. İlk olarak public GameObjct değişkeni oluşturduk ve onun ile sahnedeğiştir nesnesini çekeceğiz. Sonra ise oluşturduğumuz fonksiyon ile ki fonksiyon oluşturmak zorunda değilsiniz, burada önemli olan var sahneDegistir kısmı burada public gameobject ile çektiğimiz nesnenin componentleri arasından SahneDegistir scriptine eriştik ve sonra da sahne değiştirmek için yazdığımız fonksiyona erişip hangi sahneye gitmek istediğimizi yazdık.

Script Çekme

Yeniden kullanılabilir sahne değiştirme fonksiyonu bu kadar basit.

Benim yaptığım örnek projeye göz atmak isterseniz buraya tıklayıp GitHub üzerinden inceleyebilirsiniz.