Ana içeriğe atla

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

Bu blogdaki popüler yayınlar

Uygulama Mağazalarında Sıralama Faktörleri

Sayın Okuyucu,      ASO sürecimiz devam ederken, uygulamamızın hangi meta verilere göre sıralama önceliğinin ne olduğunda bahsetmemek olmaz.       Size bir soru sorayım, kullanıcının uygulama mağazasında bir arama yaptığını düşünün. Bu arama terimi sizin uygulama başlığınızla mı kısa açıklamanızla mı yoksa uzun açıklamanızla mı eşleşse daha üst sırada yer alırsınız?     Size bahsedeceğim sıralama faktörleri bu sorunun cevabını verecektir. APP Store ve Play Store Sıralama Faktörleri     Sıralama için önemli olan faktörler yukarıdan aşağıya doğru aşağıdaki listede yer alnaktadır. •           APP STORE •           Uygulama Başlığı •           Uygulama Altbaşlığı •           Uygulama için satınalma işlemleri •        ...

AA Crazy Arrow Shooter Güncelleme

Sayın Okuyucu,      İlk oyunumuz olan AA Crazy Arrow Shooter mobil oyunu güncellendi. Üstelik reklamsız. Hemen  burayı  tıklayarak keşfedebilirsiniz.