"Enter"a basıp içeriğe geçin

Unity Günlüklerim (Roll-a-Ball) #7

Bu derste 7. videoyu inceleyeceğiz. Skor sayma ve skoru ekranda yazmayı göreceğiz.

Toplama işlemini PlayerController içinde yapmıştık. Sayma işlemine de PlayerController’dan devam edeceğiz.

Skoru tutması için int tipinde private bir değişken oluşturuyoruz.

Count değişkeni private olduğu için dışarıdan müdahale edemeyeceğiz. Ama skorunda 0’dan başladığını belirtmemiz gerekiyor. Count’ın başlangıç değerini 0 olarak belirtmek için Start() fonksiyonu içerisinde tanımlıyoruz.

Start() fonksiyonu oyun çalıştırıldığında bir kere çalıştığını hatırlayalım.

OnTriggerEnter içerisinde obje toplandığında görünürlüğünü pasif yapıyorduk. Şimdi count değişkeni ile pasif yapmanın yanında count değerini arttırıyoruz. “count++;” yazımı “count = count + 1;” ile aynı işe yarar. Yani count değişkenini 1 arttırır.

Görseldeki yolu izleyerek Text elementi oluşturalım.

UI kısmında olanlar arayüz elemanlarıdır.

Hierarchy’e Text, Canvas ile birlikte geldi. Bu ise arayüz elemanlarını klasör ve Empty Object gibi bir arada tutmaya yarıyor. Ama arayüz elemanları (Text gib) Canvas’ın childı olmak zorunda.

Adını Count Text olarak değiştirelim.

Color kısmından yazının rengini beyaz yapalım. Text kısmına Count Text yazalım. Rect kısmında hizalama ekranını açalım ve alt tuşuna basılı tutarken görseldeki gibi sol üst köşedekine tıklayın. Yazı böylece sol üste gelmiş olacak.

Pos X ve Pos Y değerlerini sırayla 10, -10 yaparsak yazının görünüşünü düzeltmiş oluruz.

UnityEngine.UI ile arayüz elemanlarına kodlar ile müdahale edebilmemiz mümkün kılınıyor.

Text objemizin hangisi olduğunu bildirmemiz için arayüzden script özelliklerine eklememiz gerekiyor. Bunun için Text değişkeninin public tanımlıyoruz.

countText.text ile text özelliğine erişiyoruz. Yani yazısına. count = 0’ın altında olmalı. toString() fonksiyonu ile int yani sayısal bir değişken olan count değişkeninin içindeki değeri string hale getiriyoruz. Bu satır ile oyun başladığında 0 olarak atadığımız count değişkenini ekrana yazdırıyoruz.

Aynı kodu count’ın her item toplandığında değiştiği yerede yazıyoruz. Böylece item toplandıkça skor artacak. Skor arttıkça ekrandaki yazı değişecek.

Kodumuzda 2 tane aynı işe yarayan satırlar bulunmakta. Bunları bir metot içine atarsak clean code kurallarına uygun bir kod yazmış oluruz.

SetCountText adında bir metot oluşturduk ve ekrana skoru yazdıran satırı buraya ekledik. Kod satırlarının olduğu yerlerde ise bu metodu çağırdık.

Kaydedip oyuna dönelim. Player objesine tıklayalım. PlayerController kısmında Count Text adında Text objeler için bir alan olduğunu göreceksiniz.

Yazdığımız kod hangi Text objesini kullanacağını bilmiyor. Bunu bilmesini sağlamak için countText değişkenini public tanımlamıştık. Şimdi hangi Text objesini kullanacağını belirtebiliriz. Bunun için Hierarchy ekranındaki Count Text objesini PlayerController altındaki Count Text alanına sürükle bırak ile ekleyelim.

Oyunu test edersek yaptığımız işlemlerin çalıştığını görebiliriz.

Tüm itemleri topladığımızda ekrana “Kazandınız!” yazmak istiyoruz. Bunu yapmak için Create ile tekrar Text objesini oluşturun. Rengini, boyutunu ve yazısını ayarlayın. Konumunu Player objesinin üstüne doğru ayarlayın. Ayarlarken Global modda olmanız gerektiğini unutmayın.

Kod kısmında ise winText adında Text değişkeni oluşturuyoruz. Başlangıç değerini boş olarak ayarlayalım. Ben hazırlarken 8 tane Pick Up objesi kullandım bu yüzden “count >= 8″ sorgusunu 8 ile sınırlandırdım. count 8 veya 8’den büyük olduğunda ise winText yazısı Kazandınız! olarak değişecek.

Kodumuzu kaydedip oyuna dönelim. PlayerController’da açılan Win Text kısmına Hierarchyden sürükle bırak ile ekleyelim. Daha sonra oyunu başlatalım. Tüm objeler toplandığında Kazandınız! yazısını görebildiyseniz oyunu başarıyla tamamlamışsınız demektir.

Yazıyı Medium’da okumak için:

https://medium.com/@osmananilozcan/unity-g%C3%BCnl%C3%BCklerim-roll-a-ball-7-3ec73c747da7

Önceki yazı:

Sonraki yazı:

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

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