Unity Dairesel Sağlık Barı Örneği

Yayınlandı: 24 Eylül 2015 yasirkula tarafından Oyun Tasarımı, UNITY 3D içinde

Hepinize tekrar merhaba (ve hayırlı bayramlar),

Bu örneğim Unity‘de daire şeklinde basit bir sağlık barı yapımı hakkında olacak. Sağlık barını oluşturmak için Unity’nin UI sistemini kullandım.

Örneği test etmek için tek yapmanız gereken şu unitypackage‘ı projenize import edip oradaki scene‘i açmak: https://www.dropbox.com/s/j1zg0c3oon2zzzf/DaireselSaglikBari.unitypackage?dl=0

Örnekteki görselleri ve scripti kendi projelerinizde dilediğinizce kullanabilirsiniz. Örnekten iki resim paylaşacak olursam:

resim1 resim2

Bu sağlık barındaki en önemli olay SaglikBariRenk objesindeki Image component‘inin “Radial 360 – Filled” modunda çalışması. Buradaki “Radial 360″ı örneğin “Vertical” diye değiştirirseniz sağlık barı Diablo tarzı yukarıdan aşağıya doğru azalır.

Umarım faydalı olur. Başka derslerde görüşmek üzere!

yorum
  1. Burak Cem Dursun dedi ki:

    Hocam scripti güncelleyecek misiniz?

  2. Furkan dedi ki:

    aynen hocam slider olarak daha iyi oldu ama bu levelleri nasıl ToString olarak yazdıracağız birde int olması lazım değil mi

    baslangıc1.text= ToString();
    bitis1.text = ToString()

    çünkü böyle yapınca ekranda
    slider(level) yazıyor.

  3. Furkan dedi ki:

    hocam birde level geçişlerinde scane geçişi olmayacak tek bir scane de tüm leveller geçecek eğer level save olduysa önceki leveldeki objeler silinecek yani çoklu scane kullanmıyacağım sıkıntı olur mu

    • yasirkula dedi ki:

      int baslangic, bitis; değişkenleriniz olsun. Oyunun başında bu iki değişkenin değerini kayıtlı veriden şu şekilde çekebilirsiniz:

      baslangic = PlayerPrefs.GetInt(“Baslangic”, 1); // Eğer kayıtlı veri yoksa değeri 1 olacak
      bitis = PlayerPrefs.GetInt(“Bitis, 5); // Eğer kayıtlı veri yoksa değeri 5 olacak

      İki tane de Text objeniz olsun. Bunların text değişkenlerine baslangic.ToString() ve bitis.ToString()’i değer olarak verebilirsiniz.

      Bar dolunca şöyle bir kod çalıştırabilirsiniz:

      scrollbar.value = 0f; // Scrollbar’ı sıfırla

      baslangic = bitis; // baslangic’in değerini bitis yap
      bitis = bitis + 5; // bitis’i 5 artır

      // baslangic ve bitis’i kaydet
      PlayerPrefs.SetInt(“Baslangic”, baslangic);
      PlayerPrefs.SetInt(“Bitis”, bitis);
      PlayerPrefs.Save();

      Ardından iki Text objesinin değerini yine ToString’ler ile güncelleyebilirsiniz.

      Oyuncu yanınca 7. seviyeden 5. seviyeye düşmek için vs. scrollbar’ın değerini sıfırlayıp yukarıdaki PlayerPrefs.GetInt fonksiyonlarını tekrar çağırabilirsiniz. Ardından iki Text objesini tekrar güncelleyin.

      Level save olduysa önceki leveldeki objeleri silmeyi, oyunun başında PlayerPrefs.GetInt’ler ile baslangic ve bitis’e değerlerini verdikten sonra yapabilirsiniz. Örneğin baslangic 5 ise, 1-5 level’lar arası objeleri yok edebilirsiniz.

      • Furkan dedi ki:

        hocam peki scoll barda nasıl artıracağız örneğin score 10 olunca artsın istiyorum

        böyle mi olacak ama bu seferde Scrollbar.value=1f; bu komut hata veriyor

        int baslangıc;
        int bitis;
        public Text baslangıc1;
        public Text bitis1;
        void Start()
        {
        baslangıc = PlayerPrefs.GetInt(“Baslangic”,1);
        bitis = PlayerPrefs.GetInt(“bitis”, 5);
        baslangıc1.text= ToString();
        bitis1.text = ToString();
        if (score == 10)
        {
        Scrollbar.value = 1f;
        }

        }

      • yasirkula dedi ki:

        “public Scrollbar Scrollbar;” değişkeni tanımladınız mı? Scrollbar.value’ye 0 ile 1 arasında bir değer vermeniz lazım. Örneğin yarısı dolu olsun isterseniz değerini 0.5f yapmanız lazım. Ayrıca aslında Scrollbar değil de Slider kullanmanız daha mantıklı olabilir bu bar için.

  4. Furkan dedi ki:

    hocam merhaba ben oyunuma level barı gibi bişey yaptım bunu scrollbarla yaptım ben şimdi score 300 olunca scroll barda ilerlemesini istiyorum 1 le 5 arasında bir aralık olacak scroll barda 5. seviyeye gelince score ve seviyeyi save edecek sonra 5 ten 10 a kadarki seviye aralığı gözükecek bunu kodla nasıl yaparız ayrıca eğer 3 seviyeyse 5e ulaşmamışsa ve canı fln bitmişse tekrar o barda gelinen yer silinecek ve score da silinecek eğer 5. seviyeye ulaşmışsak ve 7.seviyesinde can fln bitmişse 5.seviyeye girdiğimiz scorla başlayacağız ve yine aynı şekilde o barda gelinen seviye silinecek bunu nasıl kodlayacağım çoğu yerde araştırdım ama benzer bişey bulamadım bi helix jump oyunundaki level barı benziyor.

Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.