UNITY’NĐN ORĐJĐNAL BAŞLANGIÇ TUTORĐALLERĐ - ŞĐMDĐ TAMAMEN TÜRKÇE
Çeviri: Süleyman Yasir KULA
Web: http://yasirkula.wordpress.com/
E-mail: yasirkula@yahoo.com
Yazı boyunca bazı terimler genelde Đngilizce kullanılmıştır ve sadece birkaç kere Türkçe karşılığı
verilmiştir. Bunun sebebi Unity’e alışırken bu terimleri Türkçe değil de Đngilizce öğrenerek; daha
sonradan Đngilizce tutoriallere bakarsanız zorluk çekmemenizdir. Ancak buna rağmen bazı terimler ise
genelde Türkçe olarak kullanılmıştır, bunlarsa ya Đngilizce’si ile Türkçe’si oldukça benzer yazılışta
olan terimlerdir ya da Đngilizce’sini öğrenmenizi gerektirecek kadar önemli olacak cinste olmayan
terimlerdir.
A) Arayüzü Tanımak
Đlk Açılış
Hadi Unity’i öğrenmeye başlayalım. Henüz Unity’i açmadıysanız Başlat -> Programlar -> Unity
yoluyla Unity’i başlatabilirsiniz. Đlk olarak Unity Editörü gözükecektir. Zamanınızın bir kısmını bu
editöre ayırarak arayüzü iyice tanımaya çalışmalısınız. Ana Editör Penceresi pek çok parçaya
ayrılmıştır, bunların her birine Panel (View) denir. Unity’de her biri farklı işlevlere sahip çeşitli
View’ler bulunmaktadır.
Proje (Project) Paneli
Tüm Unity projeleri Assets (Türkçesi: Mal varlığı) klasörü içerir. Bu klasörün içeriği ise Proje
panelinde görünür durumdadır. Burada oyununuzu oyun yapan her şeyi, yani Asset’leri depolarsınız,
örneğin scriptler, 3 boyutlu modeller, kaplamalar (texture), ses dosyaları (audio file) ve Prefab’lar
gibi. Herhangi bir asset’e proje panelinde sağ tıklayıp Reveal in Explorer (Explorer’da Görüntüle)
seçeneğini seçerseniz o assetin bulunduğu Windows klasörü açılır.
Önemli Not: Asla herhangi bir asset’in konumunu Windows penceresini kullanarak değiştirmeyin. Bu
durumda, o asset’le bağlantısı olan tüm parçalar kopacaktır. Bu yüzden her zaman için asset’lerinizi
düzenlerken Proje panelini kullanın.
Projenize herhangi bir asset eklemek için, ilgili dosyayı Windows klasörünüzden sürükle-bırak
yaparak Proje paneline sürükleyebilir ya da Assets -> Import New Asset (Yeni Asset Al) yolunu
izleyebilirsiniz.
Proje panelinizde depolanan bir başka asset türü de sahnelerdir (Scene). Bunları birer bölüm (level)
olarak düşünebilirsiniz. Örneğin, Unity’nin şu anki versiyonunu ilk açtığınızda karşınıza Bootcamp
oyununun bir sahnesi gelir. Yeni bir sahne oluşturmak içinse CTRL+N (Mac’da Command+N)
kısayolunu kullanabilirsiniz. O an görüntülediğiniz sahneyi kaydetmek içinse CTRL+S (Mac’da
Command+S) kısayolunu kullanabilirsiniz.
Bazı asset dosyaları sadece Unity’nin içerisinden oluşturulabilir. Bunları oluşturmak için Create
(Oluştur) butonuna basabilirsiniz.
Bu pencereden oyununuza scriptler (kodlar), Prefab’lar veya klasörler oluşturabilir ve böylece proje
dosyalarınızı düzenli bir şekilde tutabilirsiniz. Herhangi bir asset’in veya klasörün ismini değiştirmek
için, ilgili dosyaya tıkladıktan sonra F2 tuşuna (Mac’da Enter tuşu) basabilirsiniz. Bir klasörü
genişletirken Alt tuşuna basılı tutarsanız, o klasörün tüm alt klasörleri de otomatik olarak genişletilir.
Hiyerarşi (Hierarchy) Paneli
Hiyerarşi paneli içerisinde, o an baktığınız sahnede yer alan tüm GameObject’ler gösterilir.
Bunlardan bazıları bir objenin direk kendisi olabilirken bazısı da bir Prefab’ın kopyası (instance)
olabilir. Objeleri Hiyerarşi paneli sayesinde seçip objelerinize ebeveyn obje atayabilirsiniz (Parent).
Sahnenize objeler eklenince ya da objeler sahnenizden gittikçe, bu aynı zamanda Hiyerarşi panelinde
de gerçekleşecektir.
Ebeveyn Atama (Parenting)
Unity, Parenting adında bir sistem kullanır. Bir GameObject’i başka bir GameObject’in çocuğu
(child) yapmak için child objeyi seçip parent (ebeveyn) objenin üzerine sürüklemelisiniz. Bir child
obje, parent objesinin hareket ve rotasyon işlemlerini aynen kendi üzerinde de uygulayacaktır.
Bu resimde 2 tane, parent işlemi uygulanmamış, normal obje gözüküyor.
Bu resimdeyse objelerin biri diğerine child olarak atanmış, böylece parenting yapılmıştır.
Araç Çubuğu (Toolbar)
Araç çubuğu 5 adet temel fonksiyona hızlı erişim sağlamaktadır.
Hareket (Transform) Butonları - Scene paneli içerisinde kullanılır
Transform Gizmo (Türkçesi ‘Zımbırtı’) Butonları - Scene panelindeki görünümü
etkiler.
Oynatma-Durdurma-Bir Adım Đleri Sarma (Step) Butonları - Game (Oyun) paneliyle
beraber kullanılır.
Layers (Katmanlar) Butonu - Sahnede gösterilecek objeleri belirlemeye yarar.
Layout (Pencere Düzeni) Butonu - Sahnedeki pencerelerin düzenini değiştirmeye
yarar.
Scene (Sahne) Paneli
Scene paneli sizin interaktif pencereniz olacaktır. Bu paneli kullanarak objelerinizi, yer şekillerini,
kamerayı, karakterinizi, düşmanları, yani tüm GameObject’lerinizi konumlandırabilirsiniz. Objeleri
bu panel vasıtasıyla konumlandırmak Unity’nin en önemli fonksiyonlarından biridir. Bu sayede bu
işlemleri oldukça hızlı bir şekilde gerçekleştirebilirsiniz.
Scene Paneli Navigasyonu
Burada, navigasyon için temel kullanım bilgilerini vereceğiz, daha fazlası için kullanım kılavuzuna
başvurabilirsiniz.
Sağ mouse tuşuna basılı tutarak Uçuş Moduna (Flythrough) geçebilirsiniz. Bu moddayken
farenizin yardımıyla etrafa bakabilir, WASD tuşlarıyla etrafı gezebilirsiniz. (Q ve E tuşlarını
kullanarak kamerayı yukarı ve aşağı oynatabilirsiniz.) (Bu işlemler sırasında Shift tuşuna basılı
tutarak daha hızlı gezinebilirsiniz.)
Bir GameObject’i seçip F tuşuna basarsanız Scene paneli, otomatik olarak o objeye ve onun
pivot noktasına bakacak şekilde ayarlanacaktır.
Ok tuşlarıyla XZ ekseninde gezinebilirsiniz.
Alt tuşu basılıyken farenin sol tuşuna basılı tutarak ekranı çevirebilir, etrafa bakabilirsiniz.
Alt tuşu basılıyken farenin orta tuşuna basılı tutarak Scene paneli ekranında hareket
edebilirsiniz.
Alt tuşu basılıyken farenin sağ tuşuna basılı tutarak Scene paneli ekranında zoom
(yakınlaştırma) işlemi yapabilirsiniz. Bu işlemi ayrıca (eğer varsa) farenizin tekerleğiyle de
yapabilirsiniz.
Ayrıca El Butonu (Hand Tool) ile (Kısayol tuşu ‘Q’) de bu işlemleri, şöyle yapabilirsiniz:
Farenin sol tuşuna basılı tutarak kamerayı hareket ettirebilirsiniz.
Farenin sol tuşuna ve Alt tuşuna basılı tutarak kamerayı döndürebilirsiniz.
Farenin sol tuşuna ve CTRL (Mac’de Command) tuşuna basılı tutarak zoom
yapabilirsiniz. (Bu bende çalışmadı.)
Scene panelinin sağ üst köşesinde gördüğünüz şey Scene Gizmo’dur. Bu şey, kameranızın o anki
rotasyonunu gösterir ve hızlı bir şekilde kameranızın açısını değiştirebilmenizi sağlar.
Bu parçanın herhangi bir koluna tıklayarak sahne kameranızı o yöne bakacak şekilde
ayarlayabilirsiniz. Bu moddayken kameranızı döndürürseniz (ALT+Mouse Sağ Tuşu) Đzometrik
Mod’a (Isometric Mode) geçiş yaparsınız. Bu moddayken sahnenizdeki objeleri daha yoğun bir
şekilde görebilirsiniz. Bu moddan çıkmak için Scene Gizmo’sunun ortasındaki küp şekline tıklamanız
yeterlidir. Ayrıca herhangi bir zamanda Đzometrik Mod’a geçiş yapmak için, Scene Gizmo’nun
ortasına Shift tuşu basılıyken tıklayabilirsiniz.
GameObject’lerin Konumlandırılması
Oyununuzu tasarlarken bol bol obje oluşturacak ve bunları oyun dünyanızda konumlandıracaksınız.
Bunu yapmak için Araç Çubuğu’ndaki Transform Butonlarını kullanabilirsiniz. Translate
(Konumlandır) (Kısayol tuşu ‘W’), Rotate (Döndür) (Kısayol tuşu ‘E’), Scale (Boyutlandır) (Kısayol
tuşu ‘R’) fonksiyonlarıyla GameObject’lerinizi konumlandırabilirsiniz (Bunların klavye kısayol
tuşlarına alışmaya bakın çünkü bu fonksiyonları sürekli kullanacaksınız.). Bir GameObject seçiliyken
bu fonksiyonlardan herhangi birini kullandığınızda, Scene panelinde, GameObject’in etrafındaki
Gizmo değişir. Gizmo’nun herhangi bir parçasına tıklayarak çeşitli işlemler uygulayabilirsiniz. Ayrıca
dilerseniz Inspector panelinde yer alan Transform Component’indeki değerleri elle değiştirerek daha
kesin sonuçlar elde edebilirsiniz.
Aşağıda Translate, Rotate ve Scale fonksiyonlarının Gizmo’larını görebilirsiniz:
Scene Paneli Görünümünü Ayarlamak
Bu araç çubuğu size Scene panelini çeşitli modlarda göstermeye yarar. Bunlar Textured, Wireframe
(Tel Kafes), RGB (Red-Green-Blue)(Kırmızı-Yeşil-Mavi), Overdraw (Üst üste binme) ve başka
seçeneklerdir. Ayrıca bu çubuk sayesinde sahnenizdeki ışıkları görüntüleyebilir, sesleri dinamik olarak
dinleyebilirsiniz. Bu çubuk hakkında daha detaylı bilgi için kullanım kılavuzuna bakabilirsiniz.
Game (Oyun) Paneli
Game paneli sahnenizdeki kamera(lar)ın gözüyle, oyununuzu test etmeye yarar. Bu şekilde
oyununuzun yayınlandığında nasıl duracağını görebilirsiniz. Bir oyunu oynamanız için sahnenizde en
azından 1 kameranızın olması gereklidir.
Play (Oynatma) Modu
Araç çubuğunda yer alan bu butonları kullanarak Oynatma Modu’na geçiş yapabilir, oyununuzun son
hâlini dinamik olarak test edebilirsiniz. Unutmayın, Oynatma Modu’ndayken yapacağınız bir
değişiklik geçici olacaktır ve bu moddan çıktığınızda resetlenerek yok olacaktır. Editörün arayüzü de
bunu hatırlatmak için biraz kararacaktır. Bu moddayken önemli bir değişiklik yaptıysanız ve
değişikliğinizin kaybolmamasını istiyorsanız yaptığınız değişikliği bir kenara not edin, yoksa geri
dönüşü olmaz.
Game Paneli Görünümünü Ayarlamak
Bu araç çubuğundaki ilk buton Aspect (Görünüş) butonudur. Bu buton sayesinde Game panelindeki
görüntünün aspect-ratio oranını değiştirebilirsiniz (En-boy oranı diyebiliriz bunun için.). Bu seçeneği
kullanarak oyununuzun farklı oranlardaki monitörlerde nasıl görüneceğini test edebilirsiniz.
Sağ taraftaki Maximize on Play butonu sayesindeyse Oynatma Modu’na geçiş yaptığınızda Game
panelinin otomatik olarak büyüyerek editörün %100’ünü kaplamasını sağlayabilirsiniz. Böylece
oyunlarınızı tam ekran olarak test edebilirsiniz.
Bu seçeneğin bir yanındaki Gizmos butonuyla Scene panelinde görünür hâlde olan tüm Gizmo’ların
aynı zamanda Game panelinde de görünmesini sağlayabilirsiniz. Bu, Gizmos class (sınıf) fonksiyonu
kullanılarak çizilmiş tüm Gizmo’ları kapsamaktadır.
Son olarak da Stats (Đstatistikler) butonunu görüyorsunuz. Bu buton sayesinde Game panelinde, o an
bilgisayarın arka planında çalışan tüm sayısal istatistikî verileri görmenize yarayan bir pencere
açarsınız. Bu, özellikle oyununuzu farklı grafik kartları için optimize ederken, sayısal veriler olarak
çok işinize yarar.
Inspector Paneli (Türkçe’si ‘Müfettiş’ ancak siz bunu direk bu isimle ezberleyin.)
Unity’de tasarlanan oyunlar, çeşitli 3 boyutlu şekillere (mesh), scriptlere, seslere veya ışıklar (Light)
gibi çeşitli grafiksel elementlere sahip olan pek çok GameObject’ten oluşur. Inspector paneli, o an
seçili olan objeyle ilgili detaylı bir görünüm sunar ve o objenin tüm Component’lerini (Parça) ve bu
Component’lerinin özelliklerini burada gösterir. Bu panel vasıtasıyla GameObject’lerinizin
oluşturduğunuz dünyanızdaki fonksiyonelliğini ayarlarsınız. Bu yapıyı anlamanız çok önemlidir.
GameObject’ler ve Component’ler hakkında ve bu ikisinin arasındaki bağ hakkında çok daha detaylı
bilgi için kılavuzun bir sonraki ana başlığına bakabilirsiniz. ( B) GameObject - Component Đlişkisi)
Inspector panelinde gözüken herhangi bir değer direk değiştirilebilir. Hatta bir scriptteki bir değişkenin
değerini bile, scriptin kendisini değiştirmeye gerek duymadan, Inspector paneli vasıtasıyla
değiştirebilirsiniz. Oyununuzu Game paneli vasıtasıyla Play Modu’nda test ederken de Inspector
panelindeki değerleri değiştirebilir, değişikliği anında oyunda gözlemleyebilirsiniz. Ancak bu
değişikliğin kalıcı olmadığını, Play Mode’den çıkınca resetlendiğini unutmayın. Bir script içerisinde
public (genel) bir değişken oluşturup bu değişkene belirli bir tür ataması yaptıysanız (GameObject
veya Transform gibi), bir GameObject’i veya Prefab’ı sürükle-bırak yaparak Inspector panelinde ilgili
değişkenin değerinin olduğu kısma atayabilirsiniz.
Herhangi bir Component’in isminin sağında yer alan soru işareti simgesine tıklarsanız o Component’le
ilgili detaylı bilgi bulabileceğiniz kılavuz penceresi ekrana gelir.
Bir üstteki resimde bir Component’i nasıl ekleyeceğinizi görüyorsunuz. Alttaki resimde ise, bir
Component’in isminin en sağındaki küçük dişli simgesine tıklayınca (Ya da Component’in ismine sağ
tıklayınca) açılan menüyü görebilirsiniz. Bu menü sayesinde Component’inizin tüm özelliklerini
resetleyebilir veya component’i o GameObject’ten silebilirsiniz.
Ayrıca Inspector paneli vasıtasıyla, dışarıdan import (içe aktarma) yaptığınız bir dosyanın tüm
özelliklerini de görebilir ve değiştirebilirsiniz.
Üstteki resimde yer alan Apply (Uygula) butonuna basarak o Asset’i yeniden import edebilirsiniz.
Üstteki resimde yer alan Layer (Katman) butonuna basarak GameObject’inizi bir katmana atayabilir
veya Tag (Etiket) butonuna basarak GameObject’inize bir etiket atayabilirsiniz.
Prefab’lar
Eğer bir Prefab’ı seçerseniz Inspector panelinde ekstra birkaç buton daha belirecektir. Prefab’larla
ilgili daha detaylı bilgi için kılavuzun bir sonraki ana başlığına bakın. ( B) GameObject - Component
Đlişkisi)
Diğer Paneller
Burada tanıtılan paneller Unity’nin temel panellerini kapsamaktaydı. Diğer paneller hakkında bilgi
edinmek için Unity’nin kullanma kılavuzuna başvurabilirsiniz. Ancak kısaca tanıtacak olursak:
Console (Konsol) paneli çeşitli mesajları, uyarıları ve hataları gösterip Debug aşamasında size
yardımcı olur.
Animation (Animasyon) paneli ile sahnenizde yer alan objelerinize animasyonlar
ekleyebilirsiniz.
Lightmapping paneli ile Unity’nin dâhili editörünü kullanarak objelerinize lightmap
ekleyebilirsiniz.
Occlusion Culling (Düzgün bir Türkçe karşılığı yok.) paneli ile oyununuzun performansını
artırmaya yarayan Occlusion Culling işlemini ayarlayabilirsiniz.
Evet, bu bölümün sonuna geldiğimize göre bir sonraki ana başlığa geçebilirsiniz. (NOT: Bir sonraki
ana başlık orijinal başlangıç kılavuzunda olmayıp Unity’nin çok geniş olan kendi kullanma
kılavuzundan önemli birkaç başlığın derlenmesiyle oluşturulmuştur.)
B) GameObject - Component Đlişkisi
GameObject
GameObject’ler Unity’nin en önemli parçasıdırlar. Bir GameObject’in ne olduğunu ve nasıl
kullanıldığını anlamak çok önemlidir. Bu bölüm size bunu açıklayacaktır.
GameObject Nedir?
Oyununuzda yer alan her bir obje bir GameObject’tir. GameObject’ler tek başlarına hiçbir şey
yapamazlar. Bir GameObject; bir karakter, ağaç veya özel efekt olmadan önce üzerinde özel
ayarlamalar yapılmalıdır. Ama az önce saydığım şeyler birbirinden oldukça farklı şeylerdi diye
düşünebilirsiniz. Örneğin sabit (static) bir oda objesini bir kuş objesinden farklı kılmayı nasıl
başarabileceğimizi merak edebilirsiniz. Evet o hâlde bu GameObject’leri birbirinden farklı kılan şey
nedir?
Bunun cevabını şöyle verebiliriz: GameObject’ler birer taşıyıcıdırlar. Onlar boş birer kutudurlar ve
bizler bu kutunun içine değişik parçalar sokarak bir ada ya da fiziksel bir araba oluştururuz. O yüzden
GameObject’leri gerçekten anlamak için bu parçaları da anlamalısınız, biz bu parçalara Unity’de
Component (Parça) diyoruz. Nasıl bir obje oluşturacağınıza bağlı olarak, bir GameObject’in içerisine
değişik Component’ler atayarak farklı farklı kombinasyonlar kurarsınız. GameObject’i boş bir tencere
olarak düşünün ve Component’leri de bu tencereye koyduğunuz farklı farklı içerik olarak düşünün.
Unity’nin içerisindeki hazır Component’leri kullanabileceğiniz gibi script yazarak kendi
Component’lerinizi de oluşturabilirsiniz.
Konuya ısınmaya başladıysanız biraz daha detaya inmeye hazırız demektir.
1) GameObject - Component Đlişkisi
Az önce de söylediğimiz gibi, GameObject’ler çeşitli Component’ler içerirler. Şimdi bu ilişkiyi,
GameObject’i ve en yaygın Component’i olan Transform Component’ini inceleyerek daha yakından
göreceğiz. Unity’de herhangi bir sahnedeyken yeni bir GameObject oluşturun (Kısayol tuşu
CTRL+Shift+N, Mac’deyse Command+Shift+N), oluşturduğunuz bu GameObject’i seçin ve
ardından Inspector paneline dikkatinizi verin.
Yukarıda boş bir GameObject’in Inspector’daki görünümü verilmiştir. Bir GameObject’in boş
olmasına rağmen yine de bir isme (Name), Tag’a (Etiket) ve Layer’a (Katman) sahip olduğuna dikkat
edin. Ayrıca buna ek olarak her GameObject, oluşturulduğu anda bir Transform Component’ine sahip
olur.
Transform Component’i
Unity’de Transform Component’ine sahip olmayan bir GameObject oluşturmanız imkansızdır.
Transform Component’i en önemli Component’lerden biridir. Bu Component, GameObject’in 3
boyutlu uzaydaki konumunu (position), yaptığı açıları (rotation) ve boyutunu (scale) ifade eder. Eğer
bir GameObject’in içerisinde Transform Component’i yoksa o GameObject sadece bilgisayarın
hafızasındaki bir bilgidir. O GameObject kesinlikle 3 boyutlu dünyada yer almaz.
Transform Component’i ayrıca Parenting adında bir konsepti de mümkün kılar. Bu işlemi Unity
Editor’den yaparsınız. Parent atama işlemi GameObject’lerle çalışırken sık sık kullanacağınız, çok
önemli bir işlemdir. Transform Component’i ve Parent atama işlemi hakkında daha detaylı bilgi için
Unity’nin kendi kılavuzuna bakabilirsiniz.
Diğer Component’ler
Transform Component’i her GameObject’te bulunur ve bu yüzden çok önemlidir. Ancak bir
GameObject bunun dışında başka Component’lere de sahip olabilir.
Yukarıda, yeni bir sahne oluşturduğunuzda otomatik olarak oluşturulan Main Camera objesinin
Component’lerini görüyorsunuz. Bu resme bakarak Main Camera GameObject’inin Camera,
GUILayer, Flare Layer ve Audio Listener olmak üzere çeşitli Component’lerden oluştuğunu fark
etmişsinizdir. Tüm bu Component’ler o GameObject’e bir takım fonksiyonellik verir. Onlar olmadan,
oyuncuya bir görüntü verecek render işlemi gerçekleşmezdi!
2) Component Kullanımı
Component’ler, oyununuzda yer alan objelerin bel kemiğidirler. Onlar GameObject’leri fonksiyonel
kılmaya yarar.
Daha önce de bahsettiğimiz gibi; bir GameObject, çeşitli Component’leri barındıran bir taşıyıcıdır.
Başlangıçta otomatik olarak tüm GameObject’lerde Transform Component’i bulunur. Bunun sebebi
de Transform’un, o objenin konumunu, yaptığı açıları ve boyutunu ifade etmesidir. Transform
Component’i olmadan bir GameObject 3 boyutlu uzayda yer alamazdı. Şimdi boş bir GameObject
oluşturun. Bunun için menüden GameObject -> Create Empty yolunu izleyebilirsiniz.
Oluşturduğunuz GameObject’i seçin ve Inspector paneline bakın.
Inspector panelini bir GameObject’e hangi Component’lerin atandığını görmek için kullanabilirsiniz.
Component’ler silindikçe ya da atandıkça bu işlem aynı zamanda Inspector panelinde de gözükür.
Inspector panelini kullanarak Component’lerin herhangi bir özelliğini değiştirebilirsiniz. (Buna
scriptler de dahildir.)
Yeni Component Eklemek (Atamak)
Bir GameObject’e yeni bir Component eklemek için Components menüsünü kullanırsınız. Az önce
oluşturduğumuz GameObject’e bir Rigidbody Component’i (Katı cisim yapmaya yarayan, yerçekimi
gibi fizik kurallarını bir objeye uygulamak için gerekli olan Component) ekleyerek bu işlemi
öğrenelim. Objenizi seçin ve menüden Component -> Physics -> Rigidbody seçeneğini seçin. Bunu
yaptığınızda Inspector panelinde Rigidbody’nin özelliklerinin belireceğini fark edeceksiniz. Eğer şimdi
Play butonuyla oyununuzu test ederseniz küçük bir sürprizle karşılaşacaksınız. Bunu deneyin ve bir
Component’in GameObject’i nasıl fonksiyonel kıldığını görün. (GameObject’inizin y eksenindeki
koordinatı azalacaktır. Bunun sebebi Unity’nin fizik motorunun GameObject’i artık bir yerçekiminin
etkisi altına almasıdır.)
Bu resimde Rigidbody Component’i eklenmiş GameObject’i görebilirsiniz. Tek bir GameObject’e
dilediğiniz kadar Component ekleyerek değişik kombinasyonlar uygulayabilirsiniz. Bazı
Component’ler başka Component’lerle kombine edilince en iyi çalışırlar. Örneğin, Rigidbody ile
Collider Component’leri beraber çalışırlar. Rigidbody, NVIDIA PhysX fizik motoru vasıtasıyla
objenin Transform Component’ine etki ederken Collider de Rigidbody’nin çeşitli objelerle etkileşime
geçmesini sağlar. Başka bir kombinasyon örneği de partikül sistemidir. Bu sistem Particle Emitter,
Particle Animator ve Particle Renderer Component’lerini kombine ederek hareketli partiküller
oluşturur.
Herhangi bir Component hakkında çok daha detaylı bilgi almak için Unity’nin kendi kılavuzuna göz
atabilirsiniz. Ayrıca Inspector’dayken bir Component’in isminin sağındaki soru işaretli simgeye
tıklayarak da o Component hakkında yardım alabilirsiniz.
Component’leri Düzenlemek
Component’lerin en güzel özelliklerinden birisi de esneklik sunmalarıdır. Bir GameObject’e
Component atadığınızda Inspector panelinde o Component’in çeşitli özellikleri (Properties) belirir ve
bu değerleri gerek Inspector’dan, gerek oyun sırasında scriptler vasıtasıyla istediğiniz gibi
değiştirebilirsiniz. Burada 2 çeşit özellik bulunmaktadır: Değerler (Value) ve Referanslar.
Alttaki resme bakın. Bu, Audio Source Component’i eklenmiş boş bir GameObject’tir. Resimde
gördüğünüz değerler varsayılan değerlerdir.
Bu Component tek bir Referans özelliği ve yedi adet Değer özelliği içermektedir. Audio Clip (Ses
Klibi) özelliği referanstır. Bu Audio Source Component’i çalıştığında, Audio Clip’te referans olarak
gösterilen klibi çalacaktır. Eğer referans belirtilmemişse hata verecektir. Buraya bir referans atama
işlemini Inspector’dan yapmalısınız. Bunu yapmak içinse Proje panelinden bir ses dosyasını referans
kısmına sürüklemek ya da Object Selector’u (Obje Seçici) kullanmak yeterlidir.
Gördüğünüz gibi, şimdi bu Component’imize bir ses klibi (Audio Clip) referans olarak atanmış
durumdadır. Component’ler daha farklı türlerde referanslar da içerebilirler, başka Component,
GameObject ya da Asset’ler gibi.
Buradaki Audio Clip’in diğer tüm özellikleri birer Value’dir (Değer). Değerleri direk Inspector
üzerinden değiştirilebilir. Audio Clip’in Value özellikleri işaretlenebilir kutucuklardan, nümerik
değerlerden, açılabilir kutucuklardan oluşuyor ancak bir değer ayrıca string (yazı), renk, eğri veya
başka türde de olabilir. Bunlar hakkında daha detaylı bilgi Unity kılavuzunda mevcuttur.
Değerlerin Test Edilmesi
Play Mode’deyken (Oynatma Modu) bir GameObject’in herhangi bir değerini Inspector’dan
dilediğinizce değiştirebilirsiniz. Mesela farklı yüksekliklerde zıplayabilmenin nasıl olacağını test
edebilirsiniz. Eğer bir scriptte Ziplama Yuksekligi adında bir değişken oluşturursanız, Oynatma
Modundayken bunun değerini değiştirebilirsiniz ve zıplama tuşuna basıp yaptığınız değişikliğin
etkilerini test edebilirsiniz. Ardından Oynatma Modundan çıkmadan bu değeri tekrar değiştirebilir,
farkı saliseler içerisinde oyununuzda test edebilirsiniz. Unutmayın, Oynatma Modundan çıktığınızda,
Oynatma Modundayken yaptığınız değişiklikler resetlenerek eski değerlerine dönerler. Oynatma
Modunda bir özelliğin değerini değiştirerek anlık testler yapabilir, çeşitli ayarlamalar ve kalibrasyonlar
uygulayabilirsiniz. Bunu kendiniz de deneyin. Bu özelliği kullandıktan sonra etkileneceğinizi
düşünüyorum.
Component’leri Silmek
Eğer bir Component’i silmek istiyorsanız, Component’in ismine sağ tıklayın ve Remove Component
seçeneğini seçin. Ya da alternatif olarak ? işaretinin sağındaki küçük dişli simgesine tıklayabilirsiniz.
Bu Component’e ait tüm özellikler de onunla beraber gidecektir ve unutmayın; bu işlemi geri
alamazsınız! Bu yüzden o Component’i silmek istediğinizden iyice emin olun.
3) Component - Script Đlişkisi
Bir script oluşturduğunuzda ve bu scripti bir GameObject’e atadığınızda script, tıpkı Component’lerde
olduğu gibi GameObject’in Inspector panelinde belirir. Bunun sebebi scriptlerin atandıkları zaman
birer Component’e dönüşmeleridir, çünkü scriptler de birer özelleştirilebilir Component çeşididirler.
Yani anlayacağınız; scriptler, kendi oluşturabileceğiniz Component’lerdirler. Scriptlerin içerisinde,
Inspector’da gözükecek özellikleri girersiniz ve script içerisine ne yazdıysanız oyun sırasında bu kod
aynen çalıştırılır.
Scriptler hakkında daha detaylı bilgi için Unity’nin kılavuzuna başvurabilirsiniz. Böylece bu bölümün
de sonuna geldik. Hazırsanız sonraki bölüme geçebilirsiniz.
C) Asset’lerle Çalışmak
Bu bölümde Unity’de assetlerin (Türkçesi: ‘Mal varlığı’) kullanımını göreceğiz. Burada
yapacaklarımız genel şeyler olup işin temelini anlamaya yönelik olacaktır.
Basit Bir Asset Oluşturmak
Unity’nin desteklediği herhangi bir 3D modelleme programını kullanarak basit bir model oluşturun.
Biz bu aşamada Maya’yı kullandık. Ardından modelinizi kaydedin.
Çevirmen Eklemesi: Assetler sadece 3 boyutlu modeller değildirler. Bir ses dosyası, kaplama, resim,
hazır obje, model, materyal vb. pek çok şey de birer assettir.
Import (Đçeri Aktarmak)
Modelle işiniz bittiğinde onu projenizin olduğu Project klasöründeki Assets klasörünün içerisine
kaydedin. Ardından Unity projenizi açtığınızda, oluşturduğunuz asset otomatik olarak fark edilecek ve
proje dosyalarınızın arasına Import edilecek. Proje paneline baktığınız zaman, oluşturduğunuz asseti
burada görebilirsiniz. Aklınızda bulunsun, Unity oluşturduğunuz modelleri import etmek için FBX
exporter adında bir eklenti kullanır ve böylece modellerinizi FBX formatına çevirir. Alternatif olarak,
kullandığınız modelleme programından modelinizin kayıt türünü FBX olarak seçip direk bu formatta
kaydederek bu eklentiyi kullanmaya gerek duymazsınız.
Import Seçenekleri
Eğer Proje panelinden, az önce import ettiğiniz asseti seçerseniz, asset için import özellikleri
Inspector panelinde gözükecektir. Buradaki özellikler seçilen assetin türüne göre değişiklik
gösterebilir.
Sahneye bir Asset Eklemek
Bunu yapmak için bir asseti Proje panelindeyken seçip Hiyerarşi veya Sahne (Scene) paneline
sürüklemeniz yeterlidir. Bunu yaptığınızda sahnede, Mesh Renderer isimli bir Component’e sahip
olan bir GameObject oluşturmuş olursunuz. Eğer bir texture (kaplama) veya ses dosyası ile
çalışıyorsanız, bunu sahneye değil de mevcut bir GameObject’in üzerine sürükleyerek ona
atamalısınız.
Farklı Assetleri Bir Arada Kullanmak
Burada, yaygın olarak kullanılan assetler arası ilişkiler verilmiştir.
Bir texture, bir Materyale atanır.
Bir Materyal, bir GameObject’e atanır. (Objenin Mesh Renderer Component’i bulunmalıdır.)
Bir Animasyon, bir GameObject’e atanır. (Animation Component’i bulunmalıdır.)
Bir ses dosyası, bir GameObject’e atanır. (Audio Source Component’i bulunmalıdır.)
Bir Prefab Oluşturmak
Prefablar (Türkçe karşılık bulamadım.) bir grup GameObject’in ve Component’in; sahnede tekrar ve
tekrar kullanılması için hazırlanan, hazır şablonlardır. Tek bir Prefab’tan pek çok obje oluşturulabilir,
bu işleme kopyalama (instancing) denir. Örneğin ağaçları ele alalım. Bir ağaç Prefab’ı oluşturmak, o
ağacı sahnenin pek çok yerinde hızlıca yerleştirebilmenizi sağlar. Sahnenize yerleştireceğiniz bu
ağaçlar tek bir Prefab’a bağlı olduğu için de, o Prefab’da yapacağınız herhangi bir değişiklik tüm ağaç
kopyalarına da uygulanacaktır. Yani eğer bu ağaçların materyalini, dokusunu vb. değiştirmek
isterseniz bu işlemi sadece ağaç Prefab’ına uygulamanız yeterlidir. Böylece o Prefab’dan üretilmiş tüm
ağaç kopyalarına, yapılan değişiklik otomatik olarak uygulanacaktır. Ayrıca bir kopya üzerinde de
herhangi bir değişiklik yapıp ardından menüden GameObject -> Apply Changes to Prefab
(Değişiklikleri Prefab’a Uygula) seçeneğini seçebilirsiniz. Bu işlem, assetlerinizi düzenlerken ve
güncellerken epey zaman kazanmanızı sağlar.
Birden çok Component’i olan ve parenting hiyerarşisine sahip olan bir GameObject’i Prefab yapmak
için sadece en üst parent düzeyindeki GameObject’in Prefab’ını yapmanız yeterlidir. Böylece tüm bir
parent koleksiyonunu tek bir Prefab’la tekrar tekrar kullanabilirsiniz.
Prefab’ı bir GameObject’in yapısının planı olarak düşünebilirsiniz. Tüm Prefab klonları bu plana sadık
kalmalıdırlar. Bu yüzden de bu planı değiştirdiğiniz anda klonlar da kendilerini bu plana göre
güncellerler. Bir Prefab’ı güncellemenin çeşitli yolları vardır ve bunlardan biri de o Prefab’ın bir
kopyasını güncelleyip ardından değişiklikleri Prefab’a uygulamaktır. Prefab’lar hakkında detaylı
bilgiyi Unity’nin kılavuzunda bulabilirsiniz.
Bir GameObject için yeni bir Prefab oluşturmak için önce Proje panelinden yeni bir Prefab oluşturun.
Prefab’a istediğiniz bir ismi verin. Ardından Prefab’a atayacağınız GameObject’i sahneden veya
Hiyerarşi panelinden seçip sürükleyerek Proje panelindeki Prefab’ın üzerine bırakın. Bu işlemin
ardından ilgili GameObject’in isminin mavi renge dönüştüğünü göreceksiniz. Bunun anlamı, o
GameObject’in bir Prefab’ın kopyası olduğudur. Artık tekrar tekrar kullanılabilir yeni bir Prefab
oluşturmuş oldunuz.
Assetleri Güncellemek
Bir asset import ettiniz, onu sahneye eklediniz ve bir asseti Prefab’a bağladınız. Şimdi bu asseti
düzenlemek isterseniz yapmanız gereken şey Proje panelinden o assetin ismine çift tıklamak. Böylece
o assetle ilgili uygulama açılacak ve istediğiniz değişikliği yapabileceksiniz. Assetinizi güncellemeyi
bitirdikten sonra kaydetmeyi unutmayın. Ardından Unity’e geri döndüğünüzde, yaptığınız güncelleme
fark edilecek ve asset tekrar import edilecek. Bu sırada Asset’in Prefab’la olan bağlantısı korunacak.
Yani Prefab’ınız da güncellenmiş olacak. Bir asseti güncellemekle ilgili tüm bilmeniz gereken bu.
Sadece asseti açın, güncelleyin ve kaydedin!
Opsiyonel - Assetlere Label (Etiket) Eklemek
Tüm assetlerinizi organize şekilde tutmak istiyorsanız onlara etiketler atamanız iyi bir fikirdir. Bu
sayede Proje panelinde ilgili etiketin ismini arayarak o assete hızlıca ulaşabilirsiniz.
Bir assete etiket eklemek için yapmanız gerekenler:
Proje panelinden, etiketlemek istediğiniz asseti seçin.
Inspector panelinden, alt kısımdaki “Add Label” (Etiket Ekle) simgesine (
) tıklayın. Eğer o
assete zaten bir etiket atadıysanız o zaman ilgili etikete tıklayın.
Etikete bir isim girin.
Notlar:
Assetlerinize birden çok etiket ekleyebilirsiniz.
Etiketleri ayırmak/yeni etiket oluşturmak için, etiket ismi girerken Space tuşuna basın.
Böylece bu bölümün de sonuna geldik, şimdi diğer bölüme geçebilirsiniz.
D) Sahne (Scene) Oluşturmak
Sahneler oyununuzda yer alan objeleri barındırırlar. Bir ana menü ya da oyun için bölüm oluşturmak
için kullanılırlar (Veya başka şeyler için.). Her bir sahne dosyasını tek bir bölüm olarak düşünün. Her
bir sahneye çeşitli arazi eşyaları, dekorasyonlar, binalar vb. eklersiniz ve oyununuzu parçalara
ayırırsınız.
Prefab’ların Kopyalanması (Instancing)
Bir önceki bölümde anlatılan metodla yeni bir Prefab oluşturun. Bir Prefab oluşturduktan sonra o
Prefab’ı kolayca klonlayabilirsiniz, bir Prefab’ın her bir klonuna ise Kopya (Instance) denir. Bir kopya
oluşturmak için Prefab’ı Proje panelinden sürükleyip Hiyerarşi veya sahne (Scene) panelinize
bırakmanız yeterlidir. Artık Prefab’ınızın bir kopyasını oluşturdunuz.
Component’ler ve Scriptler Eklemek
Seçtiğiniz bir GameObject’e veya Prefab’a fonksiyonellik kazandırmak için Component’ler
ekleyebilirsiniz. Scriptler de bir çeşit Component’tirler. Yeni bir Component oluşturmak için,
oluşturulacağı GameObject’i seçin ve ardından Component menüsünden bir component seçin.
Ardından seçtiğiniz Component’in Inspector panelinde belireceğini göreceksiniz.
Eğer bir GameObject’e yeni bir Component eklemek onun Prefab’ıyla olan bağlantısını kesiyorsa, bu
bağı yeniden kurmak için GameObject -> Apply Changes to Prefab yolunu izleyebilirsiniz.
GameObject’lerin Konumlandırılması
Artık GameObject’inizi sahnenize koyduğunuz göre Transform araçlarını kullanarak onu
konumlandırabilirsiniz. Bunun dışında, Transform Component’indeki değerleri değiştirerek de daha
sayısal, kesin sonuçlar elde edebilirsiniz. Bir GameObject’in konumlandırılmasıyla ilgili daha fazla
bilgi için Unity’nin kılavuzuna bakın.
Kameralarla Çalışmak
Kameralar oyunun gözüdürler. Oyuncunun oyun sırasında gördüğü görüntü kameradan gelir. Tıpkı
diğer GameObject’lerde olduğu gibi kameraları da konumlandırabilirsiniz ve hatta parent
atayabilirsiniz. Bir kamera sadece üzerine Camera Component’i eklenmiş bir GameObject’tir. Bu
yüzden o da herhangi bir GameObject’in yapabildiği şeyleri yapabilir. Bunun dışında bazı kameralara
has fonksiyonları da gerçekleştirebilir. Ayrıca Standard Assets paketiyle birlikle bazı kullanışlı, hazır
kamera scriptleri de gelmektedir. Bunlara ulaşmak için Components -> Camera-Control yolunu
izleyebilirsiniz. Kameralarla ilgili daha fazlası için Unity’nin kılavuzuna başvurabilirsiniz.
Işıklar (Lights)
Çok ender olan durumlar dışından her zaman sahnenizde ışıklara ihtiyaç duyarsınız. Unity’de 3 çeşit
ışık türü vardır ve hepsi de farklı özelliklere sahiptirler. Ancak hepsindeki ortak amaç oyununuza bir
atmosfer ve etkileyici bir hava eklemektir. Farklı ışıklandırmalar oyununuzun görünümünü tamamen
değiştirebilir, bu yüzden ışıkların etkili bir şekilde kullanımı oldukça önemli bir konudur. Işıklarla
ilgili daha fazlası için Unity’nin kılavuzuna bakın.
Bu teorik bilgileri de öğrendiğinize göre sonraki bölüme geçmeye hazırsınız demektir.
E) Oyunu Yayınlamak (Publish)
Oyununuzu tasarlarken zaman zaman onun Unity editörü dışarısında nasıl göründüğünü merak
edebilirsiniz. Bu bölümde, oyununuzu test etmek veya paylaşmak için kullanacağınız Yayınlama
Özelliklerini (Build Settings) göreceğiz.
Yayınlama Özelliklerine erişmek için menüden File -> Build Settings… yolunu izleyebilirsiniz.
Ardından ise oyununuzu yayınlarken kullanacağınız sahnelerin gözüktüğü bir pencere açılacaktır.
Bu pencereyi ilk açtığınızda varsayılan olarak pencerenin içi boştur. Eğer bu liste boşken oyununuzu
derlerseniz (build) sadece o an açık olan sahne derlenerek oyuna dahil edilecektir. Eğer sadece mevcut
bölümü test amaçlı olarak oyunu derliyorsanız o zaman bu listeyi boş bırakarak derleme işlemini
başlatabilirsiniz.
Bu listeye birden çok sahne eklemek mümkündür. Bunun 2 yolu vardır. Đlk yolu Add Current
(Mevcut Sahneyi Ekle) butonuna tıklamaktır. O an açık olan sahne listeye eklenecektir. Listeye sahne
(scene) eklemenin bir başka yolu da Proje panelinden sahne dosyalarını sürükleyip listeye
bırakmaktır.
Bu noktada her sahneye bir numara verileceğini fark edeceksiniz. Oyununuz çalıştırıldığında ilk olarak
açılacak sahne Scene 0’dır. Başka bir sahneye geçmek için oyun sırasında Application.LoadLevel()
scriptini çalıştırarak istediğiniz bölüme geçiş yaparsınız.
Eğer listeye birden çok sahne eklediyseniz ve onları bir düzene koymak istiyorsanız yapmanız gereken
şey listede yer alan sahnelerden yerini değiştirmek istediklerinizi sürükleyerek doğru yerlerine
bırakmaktır.
Eğer listeden bir sahneyi silmek istiyorsanız o sahneyi seçin ve ardından CTRL+Delete tuş
kombinasyonunu uygulayın. Sahne listeden kalkacaktır. (Sadece Delete tuşuna da basabilirsiniz.)
Oyununuzu derlemeye hazır olduğunuzda oyunun derleneceği platformu seçin. Bu noktada dikkat
etmeniz gereken şey seçtiğiniz platformun isminin yanında Unity’nin logosuna bakmaktır. Eğer
seçtiğiniz platformun yanında Unity logosu yoksa Switch Platform butonuna tıklayarak derlenecek
platformu ayarlayın. Son olarak da Build butonuna basarak oyununuzu derleyin. Oyununuzu
kaydetmek için bir isim ve yer belirledikten sonra Unity oyununuzu derleyecektir. Đşte bu kadar basit.
Eğer oyununuzu nereye kaydedeceğinizden emin değilseniz o zaman Unity proje dosyanızın olduğu
konuma kaydedin. Oyununuzu Assets klasörünün içerisine derleyemezsiniz, aklınızda bulunsun.
Oyunu derlerken Debug build kutucuğunu işaretlemek Profiler adında bir hata ayıklama
fonksiyonunu mümkün kılacaktır (Sadece Unity Pro’da mümkündür.). Buna ek olarak derlediğiniz
dosya debug sembollerine sahip olacaktır, böylece kendi seçtiğiniz bir hata ayıklama programını
kullanarak da oyununuzda debug işlemi uygulayabilirsiniz.
1) Bilgisayar Platformu
Web Player Đçin Stream Đşlemi Uygulamak (Web Player Streaming)
Oyunlarınızı Web Player için derlerken Stream adında bir işlem uygulayabilirsiniz (Düzgün bir Türkçe
karşılık bulamadım :S). Bu sayede oyununuzu web üzerinden oynarken oyununuz, Scene 0’ın
yüklenmesi biter bitmez başlatılır. Örneğin 10 bölümden oluşan bir oyununuz varsa oyuncuyu 2’den
10’a kadar olan bölümlerin de yüklenmesinin bitimine kadar bekletmek oldukça anlamsızdır. Web
Player için derlenmiş oyunlarınızda Streaming işlemi uyguladığınızda oyun dosyalarınız sahnelerin
çalıştırılma sırasına göre yüklenir. Scene 0’ın yüklenmesi biter bitmez oyun başlatılır.
Uzun lafın kısası, Streaming işlemi uygulamak oyuncularınızın oyununuzu çok daha hızlı bir şekilde
oynayabilmelerini sağlar.
Bu işlemi uyguladığınızda ekstradan yapmanız gereken tek şeyse sonraki bölümü yüklemeden önce o
bölümün assetlerinin tamamen indirilip hazır hâle getirilmiş olup olmadığını kontrol etmektir.
Normal şartlarda, Streaming özelliğini açmamışsanız, sonraki bölümü (sahne) yüklemek için şu kodu
kullanırsınız:
Application.LoadLevel(“bölümün ismi”);
Ancak Streaming işlemi uyguladığınızdaysa diğer bölüme geçmeden önce o bölümün yüklenip
yüklenmediğini test etmelisiniz. Bu işlem CanStreamedLevelBeLoaded() fonksiyonuyla sağlanabilir.
Đşte bunun nasıl çalıştığıyla ilgili bir örnek:
var yuklenecekBolum = 1;
function LoadNewLevel ()
{
if (Application.CanStreamedLevelBeLoaded (yuklenecekBolum))
{
Application.LoadLevel (yuklenecekBolum);
}
}
Eğer oyuncuya sonraki bölümün yüklenme miktarını göstermek isterseniz de
GetStreamProgressForLevel() fonksiyonunu kullanabilirsiniz. Böylece oyuncuya örneğin
“Yükleniyor, lütfen bekleyin… %48 tamamlandı” gibi bilgi vererek hoş bir hizmet sunabilirsiniz.
Burada geçen 2 fonksiyon hakkında daha detaylı bilgiyi Unity’nin kendi Scripting Referans
Dosyası’nda bulabilirsiniz.
Çevrimdışı Webplayer Derlenmesi (Offline webplayer deployment)
Bu seçeneği seçerseniz webplayer için derlediğiniz UnityObject.js dosyası (Oyuncuyla sunucu
arasında bağlantı kurmaya yarar.) oyunu yayınlarken oyuncunun tarafında bulunacaktır. Bu sayede
network bağlantınız olmasa bile yerel script dosyası üzerinde çalışma yapabilirsiniz. Normal şartlarda
ise UnityObject.js dosyası Unity’nin web serverinden indirilir.
Çevirmen Eklemesi: Bu kısım oldukça karışık olduğu için tam bir çevirisini yapamadım ancak
elimden geldiğince bir şeyler yapmaya çalıştım. Eğer Đngilizce’niz iyiyse ve teknik terimleri çok iyi
biliyorsanız Unity’nin kılavuzundan bu konuya bakabilirsiniz.
Đşletim Sistemi Đçin Derleme Yapmak (Building standalone players)
Unity ile hem Windows hem de Mac için (Intel, PowerPC ve Universal (Her iki çeşidi de destekler.)
çeşitleri bulunmaktadır.) oyununuzu derleyebilirsiniz. Bunu yapmaksa oldukça kolaydır, yapmanız
gereken şey ilgili işletim sistemini seçip ‘Build’ butonuna tıklamaktır. Đşletim sistemi için derleme
yaparken oluşturulacak dosyaların türleri işletim sistemlerine göre farklılık gösterecektir. Windows
için çalıştırılabilir dosyanın türü (.exe) olacak ve oyunun tüm içeriğinin, kaynak dosyalarının
depolandığı bir Data klasörü bulunacaktır. Mac’deyse bir ‘app bundle’ (ne olduğunu bilmiyorum.)
oluşturulacaktır ve bu dosya oyunla ilgili gerekli olan tüm dosyaları içerisinde barındıracaktır.
Oyunlarınızı Mac platformu için yayınladığınızda sadece ‘app bundle’yi paylaşmanız yeterlidir çünkü
tüm dosyalar bunun içerisinde depolanmış haldedir. Ancak Windows için yayınladığınızdaysa hem
.exe dosyasını hem de Data klasörünü beraber paylaşmalısınız, aksi takdirde oyununuz çalışmaz. Bu
işlemi şöyle düşünebilirsiniz: Oyununuzu paylaştığınız diğer insanlar da oyununuzun kaynak
dosyalarına sahip olmalıdırlar ki oyununuzu çalıştırıp oynayabilsinler.
Derlenme Aşaması
Oyununuzun derlenme aşamasında, oyununuzu kaydedeceğiniz konumda boş bir dosya oluşturulur.
Ardından Unity listedeki sahnelerin sırasına uygun olarak onları editörde açar, optimize eder, üzerinde
işlemler uygular ve onları oyununuzun bulunduğu konuma aktarır. Ayrıca sahneleriniz için gerekli
assetler de hesaplanır ve oyununuzun data dosyaları içerisinde düzenli bir şekilde yerleştirilir.
‘EditorOnly’ Tag’ına (etiket) sahip olan GameObject’ler oyununuzun yayımlanmış hâline
dahil edilmezler. Bu, oyunun son hâlinde ihtiyaç duyulmayan debug scriptleri için oldukça
kullanışlıdır.
Oyun sırasında yeni bir bölüm yüklendiğinde, eski bölümde yer alan tüm objeler yok edilir.
Bunu önlemek için, yok olmamasını istediğiniz objelerde DontDestroyOnLoad() fonksiyonunu
çalıştırmalısınız. Bu işlem genelde; bölümler arası geçiş sırasında müziğin çalmaya devam
etmesi veya oyunda oyuncunun istatistiklerini ve verilerini depolayan bir scriptin yok
olmaması, böylece gerekli verilen (RPG oyunu için tecrübe puanı, level gibi.) sonraki bölüme
aktarılması için kullanılır.
Yeni bir bölümün yüklenmesi tamamlandığında tüm aktif objelere OnLevelWasLoaded()
mesajı yollanır.
2) Android Platformu
Android işletim sistemine sahip platformlar için (telefon vb.) oyunun derlenmesi iki kısımdan oluşur:
1. Application package (.apk) dosyası, tüm gerekli kütüphaneler ve kaynaklar ile oluşturulur.
2. Application package (Uygulama paketi) dosyası ilgili platforma aktarılır.
Android platformuna oyununuzu derlemek için ‘Build’ butonuna tıkladığınızda sadece 1. aşama
gerçekleştirilir. ‘Build and Run’ seçeneğine tıkladığınızdaysa iki aşama da gerçekleştirilir.
Đlk defa Android platformu için oyununuzu derleyeceğiniz zaman Unity sizden Android SDK’sının
(Software Development Kit) konumunu girmenizi ister. Bu SDK oyununuzun oluşturulması ve
ardından Android platformunuza yüklenmesi için gereklidir. Bu özelliği daha sonra Preferences
kısmından da ayarlayabilirsiniz.
Oyununuzu Android için derleyeceğiniz zaman, Android cihazınızın özelliklerinden “USB
Debugging” ve “Allow mock locations” seçeneklerinin seçili olduğundan emin olun.
Đşletim sisteminizin Android cihazınızı görüp görmediğini test etmek için Android SDK/platform-tools
klasörü içerisinde yer alan adb devices komutunu çalıştırabilirsiniz. Bu işlem hem Windows hem de
Mac üzerinde çalışmaktadır.
Unity bir application archive (.apk) dosyası oluşturur ve bu dosyayı kullanarak oyununuzu bilgisayara
bağladığınız Android cihazınıza yükleyebilirsiniz. Bazı durumlarda uygulamanız otomatik olarak
çalıştırılmayabilir, örneğin iPhone gibi. Bu gibi durumlarda ekran kilidini açıp yeni yüklenen
uygulamalar kısmına bakmalısınız.
Kaplamaların Sıkıştırılması (Texture Compression)
Build Settings penceresinden Android için uygulama oluştururken Texture Compression adında bir
seçenek göreceksiniz. Unity, ETC1/RGBA16 texture formatını kullanır. Bu formatta kaplamalar
sıkıştırılmaz.
Eğer belli bir cihaz için application archive (.apk) dosyası oluşturmak istiyorsanız Texture
Compression seçeneğinden bu özelliği değiştirebilirsiniz. Texture formatı önceden belirlenmiş
kaplamalar bu işlemden etkilenmezler, sadece kaplama formatı Automatic Compressed şeklinde
ayarlanan kaplamaların formatı Texture Compression seçeneği ile belirlediğiniz formata ayarlanır.
Oyununuzun, sadece kullandığı kaplama formatını destekleyen cihazlara yüklenebilmesi için Unity
AndroidManifest kullanarak (Ne olduğunu bilmiyorum.) çeşitli etiketler oluşturur. Böylece Android
Market için filtre mekanizması uygulanarak oyununuz sadece kaplama türüyle uyumlu cihazlara
yüklenebilir.
Kaynakların Önceden Yüklenerek Hazır Tutulması (Preloading)
Oyununuzu çalıştırdığınızda, bir sahnedeki assetler, sahne çalıştırılmadan hemen önce otomatik olarak
o sahnenin içerisine yüklenir ve ardından sahne çalıştırılır. Buna tek istisna ise scene 0 için geçerlidir.
Çünkü genelde scene 0 şirket logolarının gösterimi için kullanılır ve bu aşamanın olabildiğince hızlı
başlaması iyi olur.
Eğer ki tüm bölümlerinizin önceden yüklenerek (preload) çalıştırılmak için beklemesini istiyorsanız
boş yeni bir sahne oluşturmalı ve içerisinde Application.LoadLevel(1) fonksiyonunu çalıştırmalısınız.
Ardından Build Settings penceresinden bu boş sahneyi en yukarı taşımalısınız, yani sahnenin
numarasını 0 yapmalısınız. Böylece sonraki tüm bölümler önceden yüklenecektir.
Artık Oyunlarınızı Tasarlamaya Hazırsınız
Şimdiye kadar öğrendiklerinizle artık Unity’nin arayüzünü tanıyor, assetleri kullanmayı, sahne
oluşturmayı ve oyununuzu nasıl yayınlayacağınızı biliyorsunuz. Artık düşlerinizdeki oyunu
tasarlamanız için önünüzde hiçbir engel yok. Bu yolda daha pek çok şey öğreneceksiniz ve biz de bu
arada size yardımcı olmak için yanınızda olacağız.
Unity’i kullanmakla ilgili daha detaylı bilgi için Unity’nin kendi kılavuzuna başvurabilir ya da
internetten başka derslere bakabilirsiniz.
Çevirmen Eklemesi: Türkçe olarak Unity kaynakları için web sitemi ziyaret edebilirsiniz:
http://yasirkula.wordpress.com/
Ayrıca başka Unity kullanıcılarıyla temasa geçmek, onlardan yardım istemek, kendi takımınızı kurmak
ya da paylaşım yapmak için Unity forumlarına göz atabilirsiniz. Kesinlikle forumlarımızı arada bir
ziyaret edin çünkü sizin yaptığınız o muhteşem oyunları bizler de görmeyi merakla bekliyor olacağız!
Çevirmen Eklemesi: Böylece bir yazının daha sonuna geldik. Bu UNITY Başlangıç Kılavuzu’nu başka
yerlerde de paylaşabilirsiniz, tek şartımızsa alıntı yapıldığını belirtmeniz. Kesinlikle bu kılavuzu
kendi üzerinize mâl edemezsiniz. UNITY veya başka bir motor hakkında herhangi bir sorununuz
olursa veya bir şeyler paylaşmak isterseniz her zaman web siteme beklerim. Bunun gibi başka
yazılarda görüşmek üzere, hoşçakalın!