17 Ağustos 2016 Çarşamba

Unity 3D ile Yarışma Oyunu Yapımı

Unity 3D ile Yarışma Oyunu Yapımı


İlk Olarak 2D Proje açarak başlıyoruz.Boş sahnemize Canvas ekliyoruz ve Canvas ayarlarında bulunan Render Mode'u "Screen Space - Camera" yapalım.Bu işlemden sonra birkaç satır altında bulunan "Render Camera" seçeneğine tıklayarak cameramızı seçiyoruz.Bu sayede Canvasımızı kameraya sabitlemiş olduk.
2. Adım olarak Canvasa panel ekliyoruz ve bu aşamadan sonra tasarımıza başlayacağız.
İlk olarak sorumuzu yazacağımız çerçeveyi hazırlıyoruz.Panelin içine Image istiyoruz ve bu image'in içinede text istiyoruz.
Şimdilik sorumuzu yazacağımız çerçeveyi boşverip şıkların butonlarını yapacağız.İlk olarak altdaki resimde gördüğünüz gibi image oluşturuyoruz.Image'e tıklayarak Inspectorden Image compenentini kaldırıyoruz.
Şimdi yapacağımız işlem grid oluşturmak.Aslında 4 buton için grid oluşturmaya gerek yok ellede koyabiliriz fakat ben düzenli olması için grid kullanıyorum.Siz ellede tek tek ayarlayabilirsiniz.Oyunumuzun ilerleyen zamanlarında bu grid için kodda yazacağız.Bunun sebebi ekran boyutu büyüdükçe yada küçüldükçe grid için girdiğimiz değerler küçük ve büyük gelecektir ve kötü görünüm oluşacaktır.Yani gridin ayarları tam ekrana uysun diye uğraşmayın bunu kod bizim için otomatik ayarlayacak ilerki zamanlarda.


Yukarıdaki resimde CevapButonları isimli gameobject e 4 tane Image attığımı görmüşsünüzdür.Siz 4 Adet Image oluşturmayın direk Button oluşturun.Çünkü bende Imagelerin içine ButtonCompenenti ekledim.

Şuan oyunumuz yukarıdaki resimdeki gibi sadece tasarımını oluşturduk ve daha hiç kod yazmadık.Artık kod kısmına girmenin vakti geldi.İlk olarak _GameManager.cs İsimli c# scripti oluşturuyoruz ve açıyoruz.

Resimdeki gibi kodlarımızı yazıyoruz.Bu kodda yapmak istediğimiz sahnede oluşturduğumuz soru çervesini ve butonları kodumuza tanımlamak.Image,Panel,Canvas vs.. Bu tür objeler UI olarak geçtiği içinde "using unityEngine.UI" kütüphanesini eklememiz gerekiyor.
Şimdi yapacağımız işlem editöre geri dönüp boş bir GameManager isimli obje oluşturuyoruz.Bu objeye az önce oluşturduğumuz _GameManager isimli kodumuzu atıyoruz ve tanımlamaları yapıyoruz.
Şimdi ise Soru isimli c# scripti oluşturuyoruz ve kodları aşağıdaki resimdeki gibi yapıyoruz.


Oyunumuzu nerdeyse ortaladık.Şimdi yapacağımız işlem soru listesi oluşturmak bunun içinde SoruListesi.cs isimli C# scripti açıyoruz ve kodu aşağıdaki şekilde yapıp Sahnemizdeki boş obje olarak duran GameManager objesine sürüklüyoruz.

GameManagerdan sorularımızı ekliyoruz.İster hepsini şimdi ekleyin isterseniz bitince ama deneme yapacağımız için 2-3 adet soru eklemenizde fayda var.
Şimdi işimiz birazdaha zorlaşacak._GameManager script dosyasını açıyoruz ve aşağıdaki gibi güncelliyoruz.

Biraz uzun bir güncelleme oldu ama az kaldı.Şimdi Oyunumuza yani sahnemize dönelim ve GameManagerdan butonlarımızı tanımlayalım.


Bittimi? tabiki hayır :) Şimdi her butonumuza tek tek tıklayarak CevapAl fonksiyonumuza eşitleyeceğiz.
AButonu numarası = 1
BButonu numarası = 2
CButonu numarası = 3
DButonu numarası = 4
Disabled color renginide beyaz yapmaya unutmayalım.


Şimdi neler yapmışız görmek için bi test edelim.
Şimdi yapcağımız şey, doğru cevap verdiğimizde yeni soru gelmesi yanlış cevap verdiğimizde ise oyunun yeniden başlaması.Ama ilk olarak SoruVer fonksiyonunu aşağıdaki gibi değiştirelim bu sayede bir soru aldığımızda o soru listeden silinecek ve birdaha karşımıza çıkmayacak.
Şimdi ise cevapKontrol fonksiyonunda ufak bir oynama yapacağız ve doğru cevap verdiğimizde yenisoru alabileceğimiz fonksiyon oluşturacağız.Bu fonksiyon ile kapattığımız butonları tekrar açıyoruz ve yeni soru istiyoruz.Daha önce yaptığımız oyunbaslat fonksiyonunu sadece oyun başlarken kullanacağız.

SoruVer() fonksiyonunda yine küçük bir güncelleme yaptım bu sayede soru bittiği zaman oyun yeniden başlayacak tabiki siz başka birşeyler yaptırtabilirsiniz.

Bu derslikde bu kadar.Projeyi aşağıdan indirebilirsiniz.Oyunu geliştirmesi size kalmış ister puan tablosu ekleyin ister süre belki ilerleyen derslerde bunlarıda yaparız ama şuanlık sadece mantığını göstermek istedim.

Edit: Şıkların grid sisteminin kodunu yapmayı unutmuşum :) Hemen onuda ekleyelim._GridManager isimli c# scripti oluşturuyoruz ve resimdeki gibi scripti yazıyoruz ve Gridimizin objesinin içine atıyoruz.

Projeyi indirmek için(Unity sürümüm 5.4.0f3):
https://yadi.sk/d/ux7WU0R6uHGt8







4 yorum:

  1. Çok Faydalı kardeşim ellerine sağlık :)

    YanıtlaSil
  2. Farzedelim ki 100 soruluk bir testimiz var. Kullanıcı 20 tanesini çözdü. Uygulamayı kapattı. Tekrar açtığı zaman oyun 100 soruyla yeniden başlıyor. PlayerPrefs komutuyla bunu kaydetmenin yolunu da bir söyleseniz ne kadar güzel olurdu..

    YanıtlaSil
  3. proje değilde programın kendisi yokmu

    YanıtlaSil
  4. faydalı olmuş ama bunun 2 takımlısını yaparsan çok iyi olur yani sırayla iki kişi cevap vercek ve eğer yanlış cevap verirse puanı eksilcek vs.

    YanıtlaSil