Unity Level Kilit Sistemi Oluşturma

Sayın Okuyucu,

    Oyunlarımızda bölümleri geçtikçe yeni bölümlerin açılması gerektiğini biliyoruz. Bu yazımızda "Level Kilit Sistemi" nasıl yapılır ondan bahsedeceğim.

    İlk olarak Unity de basit bir oyun oluşturalım

Önceki yazımda bahsettiğim Asset Forge programı ile basit bir 3 boyutlu oyun sahnesi oluşturdum.


Bu sahnede bir yol olacak ve aşağıdaki araç yoldan ilerleyip "finish" e ulaşınca bölüm bitirilecek.


Oluşturduğum assetleri "FBX" formatında export ediyorum ve Unity sahnesine alıyorum. 


Ardından basit bir ana menu ve level paneli oluşturdum.


Level kilit sistemi yapabilmemiz için bir script oluşturup yukarıdaki "level" butonlarımıza atayacağız. Bu arada sahneleri "1", "2", "3" olarak isimlendirilmesi gerekmektedir. Ana menu sahnesini istediğiniz gibi isimlendirebilirsiniz. Level butonlarını obje isimlerini de "1", "2", "3" olarak isimlendirmemiz gerekiyor, çünkü yazdığımız kodlar bu isimleri kontrol ederek çalışacak.


Level butonlarına atayacağımız scripti oluşturup kodları yazalım.



Kodları inceleyelim;

void Start()
    {
        if (gameObject.name == "1")             //Scriptin bulunduğu butonun ismi 1 ise
        {
            GetComponent<Button>().interactable = true;   //Buton aktif olsun
        }

        else
        {
            if (PlayerPrefs.GetInt(gameObject.name) == 0) //Daha önce bu objenin ismi hafızaya alınmamışsa
            {
                GetComponent<Button>().interactable = false; // Bu buton pasif olsun
            }

            else
            {
                GetComponent<Button>().interactable = true; // Daha önce obje ismi hafızaya alınmışsa bu buton aktif olsun
            }
        }
       
    }


Şimdi ise oyun sahnelerinde oyunu kazandığımız anda sonraki seviyenin butonunu aktif edecek ve hafızaya alacak kodu oluşturmamız gerekiyor.


Bu oyunda aracımız "finish" e gelince oyunun bitip sonraki bölümümüzün açılmasını istiyoruz. Bitiş çizgisinde "finish" tagı verilmiş objemize aracımız temas ettiği anda oyun bitiyor ve kodlarımız tam da bu anda devreye girmeli. Yukarıdaki kodda kırmızı ile işaretlenmiş kodlarımız aracımız "finish" e temas ettiği anda çalışmakta ve sonraki bölümü aktif hale getirmektedir. Kodları inceleyecek olursak;

int sonrakibolum = int.Parse(Application.loadedLevelName) + 1; // Mevcut seviyenin ismi string değişkeni iken integer e dönüştürüldü ve 1 arttırıldı

            PlayerPrefs.SetInt(sonrakibolum.ToString(), 1); //Mevcut sahnenin string olarak ismine 1 değeri atandı, artık sahnenin butonu aktif olacak.
            Debug.Log("sonraki level acildi"); //Kodun çalışıp çalışmadığını konsol ekranında kontrol ettik


Artık her şey hazır "Level Kilit Sistemi" nin sorunsuz bir şekilde çalıştığını aşağıdaki videoda görebilirsiniz.



    Buraya tıklayarak level kilit sistemi ile ilgili yaptığımız bu çalışmayı indirip Unity de açabilirsiniz.

    Daha fazla oyun geliştirme ipuçları için takipte kalın.


Yorumlar

Popüler Yayınlar

İletişim Formu

Ad

E-posta *

Mesaj *