Merhaba arkadaşlar;
Daha önceki yazılardan birinde Unity ile oyun tasarımı hakkında genel bir bilgi vermiştik. Bu yazımda ise sizlerle Unity ile basit olarak bir sayı tahmin etme oyunu yapmaya çalışacağız. Aşağıdaki adımları izleyerek kolayca yapacağımız kanısındayım.
Oyun ilk olarak bizden 0-1000 arasında bir sayı tutmamızı isteyecek ve bir başlangıç tahmininde bulunacak. Bilemediği her tahminde sayımızın tahminden küçük mü veya büyük mü olduğu bilgisini alarak sayımızı yeniden tahmin etmeye çalışacak.
Unity’i açıyoruz ve resimdeki gibi Create New Project sekmesine gelip, Project Location bölümüne oluşturulacak olan proje klasörünün yolunu yazıyoruz. Oyunumuz 2 boyutlu olacağı için Setup defaults for bölümünden 2D‘yi seçiyoruz ve Create butonuna tıklayarak projemizi oluşturuyoruz.
Oyunumuz için 4 adet Scene’e ihtiyacımız var. Scene’i oyun ekranı olarak düşünebilirsiniz. Ben yazı boyunca bunlardan sahne olarak bahsedeceğim. Bizim ihtiyacımız olan sahneler: Start, Game, Win, Lose (Bunları istediğiniz gibi isimlendirebilirsiniz, ben bu şekilde isimlendirmeyi tercih ettim.)
Projeyi oluşturduğumuzda Unity bize henüz kaydedilmemiş bir sahne oluşturuyor. Bu sahneyi kaydetmek için File / Save Scene veya Ctrl+S kısayolunu kullanabiliriz.. İlk sahnemizi yani Start sahnesini bu şekilde projemizin Assets klasörü içine kaydediyoruz. Sahneler .unity uzantısına sahiptir.
Diğer sahneleri oluşturmak için File / New Scene veya Ctrl+N kısayolunu kullanabiliriz. Game, Win ve Lose sahnelerini bu şekilde oluşturup kaydediyoruz. Sahneler üzerinde geçiş yapmak için, aşağıdaki Project sekmesinin içindeki Assets klasöründen geçmek istediğimiz sahneye çift tıklayabiliriz.
Sahneleri kaydettiğimizde böyle bir görüntü elde etmemiz gerekiyor.
Şimdi Start sahnesine geçiyoruz. İlk olarak Main Camera nesnesine tıklıyoruz ve sağdaki Inspector panelinden Background’ı siyah yapıyoruz. Yukarıdaki menü çubuğundan Game Object / UI / Text yolunu izleyerek sahneye bir Text nesnesi ekliyoruz. Text nesnesini eklediğinizde sol taraftaki Hierarchy sekmesine 3 öge eklenecektir. Canvas ve onun içinde Text ve bir de EventSystem ögesi.
Canvas nesnesini ekrana çizdirilecek nesneleri üzerinde barındıran bir tuval olarak düşünebilirsiniz.
Text nesnesi ekrana yazı yazmamızı sağlayan bir UI nesnesidir. EventSystem nesnesi, siz herhangi bir şey yapmadan, oyununuzun farklı platformlarda uyumlu bir şekilde çalışmasını sağlıyor.
Şimdi Text nesnesine tıklıyoruz ve sağda bulunan Inspector panelinde Text nesnesinin özellikleri açılıyor. Bu panelden tıkladığımız nesnenin özelliklerini değiştirebiliriz. Biz Text özelliği içerisinden New Text yazısını “Sayı Tahmin Oyununa Hoşgeldin” olarak değiştiriyoruz. Font Size özelliğini de 50 yapıyoruz.
Ortadaki Scene ekranında farenizin orta tekerleğini kullanarak Canvas’ın çerçeve kenarlarını görene kadar ekranı uzaklaştırın. Daha sonra Text nesnesini sahnenin yukarı orta konumuna getirin. Text nesnesinin boyutları üzerinde herhangi bir oynama yapmadıysanız, yazının görünmediğini farkedeceksiniz. Yazının görünmemesinin sebebi yazı büyüklüğünü 50 olarak ayarlamış olmamızdır. Yazının görünmesi için Text nesnemizi köşesindeki noktalardan çekerek büyütüyoruz. En sonunda aşağıdaki gibi bir görüntü elde etmeniz gerekecek.
Denemek için yukarıda bulunan play butonuna basarsanız, oyunu açtığınızda nasıl görüneceğine bakabilirsiniz. Text nesnesinin rengini sağdaki Inspector panelinden Color seçeneğinin karşısındaki renk kutucuğuna tıklayarak beyaz yapıyoruz. Daha sonra tekrar bir text nesnesi oluşturuyoruz. Farkettiyseniz yeniden bir Canvas ve EventSystem ögesi oluşturmadı. Yeni text nesnesi Canvas ögesinin altına eklendi. Şimdi bu nesnenin içeriğini “0 ile 1000 arasında bir sayı tutun.” olarak değiştiriyoruz. Rengini istediğiniz gibi ayarlayabilirsiniz ben sarı yapacağım. Boyutunu da 35 yapıyoruz. Nesnenin boyutunu ayarlayıp, diğer text nesnesinin altına konumlandırıyoruz.
2 adet text nesnemiz var, soldaki panelde ikisinin de ismi Text olarak görünüyor. Bu durum çok nesne içeren oyunlarda karışıklığa yol açacaktır. Bunun önüne geçmek için nesnelerin isimlerini değiştirebiliriz. İlk Text nesnemize tıklayarak sağdaki Inspector panelinden, en yukarıdaki Text yazısını Baslik olarak değiştiriyoruz. Diğer text nesnesini de AltBaslik olarak değiştiriyoruz.
Şimdi oyuna başlamak için bir Başla butonu koyacağız. Bunun için bir text nesnesi daha oluşturuyoruz. Rengini beyaz, boyutunu da 50 olarak ayarlıyoruz ve alt başlığımızın altına konumlandırıyoruz. Nesne adimizi da BaslaButonu olarak değiştiriyoruz.
Peki, Başla butonu koyacağız dedik ama bir text nesnesi oluşturduk, buton nerede? Text nesnesini buton olarak kullanabilmek için, sağdaki Inspector panelinden Add Component butonuna tıklıyoruz, açılan pencereden UI / Button yolunu izleyerek text nesnemize buton özelliğini kazandırıyoruz. Bunu yaptığımızda sağdaki Inspector paneline Button (Script) adlı bir sekmenin eklendiğini görüyoruz. Buradaki sekmeden butonun özelliklerini ayarlayacağız.
Şimdi sahneler arasında geçiş yapabilmek için bir oyun objesi oluşturup, ona script yazacağız.
Soldaki Hierarchy paneline sağ tıklayıp Create Empty diyerek boş bir oyun objesi oluşturuyoruz. Objenin ismini LevelManager olarak değiştiriyoruz. (Başka bir isim verebilirsiniz, kafa karışıklığını önlemek için isimlendirmemiz gerekli.) Daha sonra objemize tıklayarak sağdaki Inspector panelinden Add Component / New Script yolunu izliyoruz ve scriptin ismini giriyoruz, ben LevelManager olarak gireceğim. İsmi yazdıktan sonra Create and Add butonuna tıklayarak scripti oluşturup objemize ekliyoruz.
Projemizin son görüntüsü bu şekilde olmalı. Şimdi aşağıdaki Project panelinden Assets klasörüne tıkladığımızda üzerinde C# ikonu olan LevelManager.cs adlı bir dosyanın eklendiğini görüyoruz. Script dosyasını düzenlemek için çift tıklayarak MonoDevelop ile scripti açıyoruz.
LevelManager sınıfının içine Unity’nin otomatik oluşturduğu metotları siliyoruz ve level geçişini yani screen geçişini sağlayacak bir fonksiyon yazıyoruz.
LoadLevel metodunu public olarak tanımlamanız gerekli, public olarak tanımlamadığınızda Unity üzerinden fonksiyona erişim sağlayamıyorsunuz. Metodun içerisinde Application sınıfından LoadLevel() metodunu çağırdık. Bu metot screen geçişini sağlayan metottur ve bu metoda parametre olarak kendi oluşturduğumuz LoadLevel ile aldığımız string name parametresini gönderdik.
Şimdi Unity’e geri dönelim.
BaslaButonu nesnesine tıklayarak sağdaki Inspector panelinden Button (Script) sekmesine geliyoruz. On Click() sekmesinden + ya tıklayarak resimdeki gibi bir görüntü elde ediyoruz. Daha sonra On Click() sekmesi altındaki None(O… yazan kutucuğa LevelManager objemizi sürükleyip bırakıyoruz. Bunu yaptığımızda No Function seçeneği seçilebilir hale gelecektir.
Yukarıdaki gibi script içinde oluşturduğumuz LoadLevel Fonksiyonunu seçiyoruz.
Daha sonra sağda oluşan text kutusuna parametre olarak oluşturduğumuz name stringini girebiliriz. Hatırlarsanız metodumuz name parametresiyle aldığı screeni yüklemek için oluşturulmuştu. Biz Basla butonuna tıklandığında Game yani oyun ekranına geçmesini istiyoruz, o yüzden parametre olarak “Game” stringini gönderiyoruz.
Ekran geçişleri için işlemlerimiz tamam, fakat Unity’de önceden yüklenecek ekranları seçmezsek geçiş yaparken hata verecektir.
File / Build Settings yolunu izliyoruz, açılan pencerede Scenes in Build paneline tüm sahnelerimizi sürükleyip bırakıyoruz ve pencereyi kapatıyoruz. Böylece oyunu çalıştırdığımızda tüm sahneleri yükleyecek ve herhangi bir hata ile karşılaşmayacağız.
Bunları uygulayıp oyunu çalıştırırsanız, Başla butonuna tıkladığınızda oyun Game sahnesine geçecektir. Böylelikle ekran geçişleri için objemizi oluşturmuş ve denemiş olduk.
Artık oyunumu hazır. Dersimiz burada sona eriyor. bir sonraki Unity dersinde buluşmak üzere...