unity3d icin unityscript dersleri.pdf

Upload: redbull330

Post on 04-Jun-2018

293 views

Category:

Documents


6 download

TRANSCRIPT

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    1/101

    aylaklar in UnityScriptin TemelleriBy iGraphic Visuals LLC 2010

    Orijinal Kaynak: http://www.unityscript.com/lessons1/basics.php

    Yazar:Terry Norton

    EVR

    Sleyman Yasir KULA

    WEB URL

    http://yasirkula.wordpress.com/

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    2/101

    --- yasirkula.wordpress.com---

    - 2 -

    NDEKLER

    1- zellikle aylaklar indir

    1.1 1: Giri 4

    1.2 2: Aklsz Objelerden baret ey - Oyun 81.3 3: Yaratma Kompleksi 12

    2- GameObject (Oyun Objesi): Scriptler ve Componentler (Paralar)

    2.1 4: Class (Snf), Component (Para) ve Script 152.2 5: Scriptlerde Deikenler (Variable) 182.3 6: Scriptlerde Fonksiyonlar (Function) 212.4 7: Scriptlerde Dot Syntax: letiim Kurmak 232.5 8: Sonu 25

    3- Deikenlere Detayl Bak

    3.1 9: Deikenler ve Component zellikleri 273.2 10: Deiken (Variable) isimleri ve eitleri 32

    4- Fonksiyonlara Detayl Bak

    4.1 Unity'nin Update() ve Start() fonksiyonlar 444.2 Fonksiyon simleri 494.3 Fonksiyonun arlmas ve ak 53

    5- Seimler, seimler, her zaman seim yapmak zorundayz

    5.1 if (eer)? 58

    6- Dot Syntax (Noktasal Yap): Componentler (Para) Aras letiim

    6.1 Scriptten darsyla iletiim 706.2 Yumurta scripti, 1 - 5 aras satrlar 746.3 Yumurta scripti, satr 7 - 11, Update() fonksiyonu 796.4 Yumurta scripti, 13. satr, Yumurtay Dndrmek 81

    6.5 Yumurta scripti, 15. satr, Eimi (Rotation) zlemek 846.6 Yumurta scripti, 17 - 23, Dndrmeyi Durdurmak 87

    7- Inspector Panelini Kullanarak Atama Yapmak (Assign)

    7.1 Ustaca dnlm bir Unity zellii (feature) 957.2 Inspector ve tek bir script kullanarak ilem yapmak 98

    8- Tebrikler, artk scriptlemenin en nemli temel bilgilerini biliyorsunuz

    8.1 Srada ne var? 101

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    3/101

    --- yasirkula.wordpress.com---

    - 3 -

    ZELLKLE AYLAKLAR NDR

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    4/101

    --- yasirkula.wordpress.com---

    - 4 -

    1: GiriBalamadan nce bir uyar Bu kullanm klavuzu zellikle hibir programlama bilgisiolmayan ve UNITY kullanmak isteyen kiiler iin hazrlanmtr. Buradan eldeedeceiniz bilgilerle programlamaya snp, bir objeye (GameObject) script (kod)yazarken yaanan korkuyu yenmeniz amalanmtr

    Scripting (Kod yazma), veya bir baka deyile programlama; zellikle tamamenaylaklar (noob) iin ok basit admlarla renilecektir. Bir obje iin muazzamkodlarn nasl olutuuyla ilgili korkunuzu yeneceksiniz.Aslnda UnityScriptin temellerini kavramak olduka kolaydr. Bizler scriptlerde

    uyguladmz ilemleri aslnda gerek hayatmzda da her zaman yapyoruz.

    Programlamayla ilgili gerekten ok detayl kitaplar, klavuzlar, eitim dosyalarmevcuttur. Ayrca Unity iin pek ok video ders de bulunmaktadr. Bunlarn ou dascriptlemenin temellerini anlatmaktadrlar. u an okuduunuz bu eitim klavuzunutamamladktan sonra tm bu dier eitici dosyalara bakarken ok daha rahatlayacak,her eyin nasl gelitiini kavrayacaksnz.

    Ben de Unity renmeye alan bir aylam. Umarm bu klavuz script yazmadakikonseptleri anlalr klar. Bir baka aylak olan benden ders almak; aynperspektiften olaylara bakabilmemizi salayacaktr.

    1den 7ye kadar olan dersler herhangi bir programlama gemii olmayan, tamamenaylak kimseler iindir. Ciddi anlamda dk dzeyde, basite anlatm yapacam.Her gn yaptmz eyleri rnek vererek ilerleyeceim. Pes etmeye neden olanktmser dncenin sizlerde olumamas iin gayret edeceim.

    8. ders ve sonras biraz daha gelimi dzeyde anlatm sunacak ve UnityScriptinkonseptlerini anlatacak. Gerek olan bir ey var ki herkes Unity programnkullanmay skebiliyor, ancak bu herkesin ortak korkusu ise scriptleme ilemi. Buklavuzu okumadan nce Unitynin arayz, eitli komutlar hakknda bilgi sahibi

    olduunuzu varsayyorum.

    NOT:Bu klavuz boyunca kimi yerlerde bulunan ve Script Referans Dosyasnaynlendirme yapan linkler teknik bir sorundan dolay olsa gerek ilememektedir.Bunun iin yle bir ey yapabilirsiniz:http://unity3d.com/support/documentation/ScriptReference/index.htmlNe zaman Script Referans Dosyasna giden bir link olursa bu linke tklayn veilgili yerdeki link sizi hangi konuya gtryorsa, buradaki alan sayfadan

    sol stteki Search vastasyla o konuyu aratn. (evirmen Eklemesi)

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    5/101

    --- yasirkula.wordpress.com---

    - 5 -

    Unity Editr

    Bu grnt Unity 3deki Bootcamp Demo oyunundandr. Bu derse balamadan ncebaka eitim dosyalar vastasyla Unitynin arayzn kullanmay biliyorolmalsnz. Buradaki dersler arayz kullanmak ile ilgili DELDR. Buradaki derslersadece Unityde UnityScript ile scriptlemeyi anlatmaktadrlar.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    6/101

    --- yasirkula.wordpress.com---

    - 6 -

    Script Editr

    Bu Unitron, Unity'nin Mac iletim sistemi srmndeki varsaylan script editr.Windowsta bu editr farkl olacaktr, ancak sonuta hepsinin amac ayndr.

    Eer UnityScript ile ilgili en ufak bilginiz yoksa, ve hatta script kelimesinin ne demekolduuyla ilgili bir fikriniz yoksa o zaman bu dersler tam size gre. Eer srf bueditrn grnm bile sizi korkutuyorsa o zaman bu dersler tam size gre.Eer Unityde oyun tasarlamak isteyen bir artistseniz ve yaratc dnce sizde varsao zaman bu dersler tam size gre.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    7/101

    --- yasirkula.wordpress.com---

    - 7 -

    Ne reneceksiniz?

    Scriptleme Referans Arivi

    Burada; aslnda scriptleme ile epeydir samimi olduunuzu reneceksiniz, siz bylednmeseniz bile. Bu yzden ilk birka derste ok yzeysel anlatm yapacam,bylece Unityde scriptlemenin aslnda farketmesenizde her zaman yaptnzeylerle ok benzer olduunu greceksiniz.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    8/101

    --- yasirkula.wordpress.com---

    - 8 -

    2: Aklsz Objelerden baret ey Oyun

    Oyun ekipmanlarnz (asset) hazrladnz. Karnzda oyun objelerinizi (GameObject)gsteren pencere bulunuyor. Bu GameObjectlerin etrafta gezinmesini, dinlemesini,konumasn, bir objeyi alp kaldrmasn, kt adamlar vurmasn veya hayalinizdeki

    herhangi bir eyi yapmasn istiyorsunuz. Ne bahtszlk ki tm bu GameObjectlertamamen aklszdrlar, tm bu eyalarla ne yapacaklarn bilemezler.

    Tam burada devreye scriptleme girer. Ama ben programlama bilmiyorumdiyebilirsiniz. Pekl, aslnda hepiniz programlama biliyorsunuz. Bunu her gnyapyorsunuz ancak buna programlama, ya da scripting demiyorsunuz. Her gn bobo oturuyor musunuz yoksa insanlarla etkileime geiyor, evcil hayvanlar seviyor,bakalaryla konuuyor, tuvalete gidiyor musunuz?

    Adm 1

    Hadi egzersiz yapalm:

    Bir koltukta oturmu, arkadanzla sohbet ettiinizi dnn.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    9/101

    --- yasirkula.wordpress.com---

    - 9 -

    Adm 2

    Ardndan telefonunuz alyor. Siz Afedersin diyorsunuz ve telefona bakyorsunuz.

    Step 3

    Telefonla konumanz yapyor ve ardndan arkadanzla sohbetinize devamediyorsunuz.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    10/101

    --- yasirkula.wordpress.com---

    - 10 -

    imdi dnn

    Hi hayatnzda bu veya buna benzer bir ey yaadnz m? Bunu yapmak zormuydu? Bahse girerim telefonu konumanzn yarsnda alp cevaplamak srasndabunun farknda bile deildiniz.

    Basite bu eylemleri yaptnz sadece, ve tahmin edin noldu? Bu yaptnz eyler descriptlerin GameObjectlere yaptklaryla tamamen ayndr.

    Hadi bunu biraz daha akla kavuturalm:

    Adm 1

    Az nceki olayda siz bir objeydiniz, bir kii, bir GameObject; ve iinde bulunduunuzoyunun ad da hayatt. Siz sohbet scriptinizi uygularken alan telefon sizinsohbet scriptinizi bld(interrupt).

    Adm 2

    Sizden baka bir fonksiyonu(function) yapmanz istendi(call) telefonlakonumak. Ve imdi siz de telefonla konumak scriptini uyguluyorsunuz.

    Adm 3

    Telefonla iiniz bittiinde, sohbet scriptinize geri dndnz(return).

    NOT:Krmzlar iindeki kelimelere dikkat edin. Bu kelimeler scriptlerde kullandnzbalca kelimelerle neredeyse tamamen ayndr. Zaten bildiiniz, anladnz,hayatnzda uyguladnz kelimeler.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    11/101

    --- yasirkula.wordpress.com---

    - 11 -

    Script Fobisi

    imdi size soruyorum, az nceki ilem ne kadar zordu? Bunlar yapamayacanz mdndnz? Ya da hi bir foruma gidip de biriyle nasl sohbet edileceini, sohbetinyarsnda telefon alarsa nasl davranacanz sordunuz mu?

    Script Fobisi: Talimat verememe korkusu (Bu terimi ben uydurdum)

    Sizde olan ey de bu mu? Birka tane birbiriyle tutarl davran biimini yazamamakorkusu mu?

    Asl nokta, aslnda tm hayatnz scriptliyorsunuz, sadece bir eyi yapmadan nceaama aama olarak bir kada yazmyorsunuz. Eer isteseniz yazabilirsiniz de,ancak bu ok zaman alrd ve niye byle bir ey yapalm ki?! Ancak artkyapmalsnz. Hayr, kendi hayatnzdaki olaylar deil; hayal gcnznderinliklerinde yaayan kendi dnyanzdaki cisimlerin davranlarn yazacaksnz.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    12/101

    --- yasirkula.wordpress.com---

    - 12 -

    3: Yaratma Kompleksi

    Unity programna sahipsiniz nk bir oyun yapmak istiyorsunuz, ya da interaktif birey. Oluturacanz oyununuzu pek ok aklsz objeyle (GameObject)dolduruyorsunuz ve artk God(Trkeye evirmek istemedim.) rolnoynamalsnz. Bu GameObjectleri oluturdunuz, imdi onlara bu hayal rndnyanzda nasl yaayacaklaryla ilgili ihtiyalar olan her eyi retmelisiniz. teburas davran biimlerini yazmanz gereken ksm, bylece GameObjectleriniz detpk sizin gibi zeki olacaklar.

    retmen Olmak

    imdi yapmanz gereken retmen roln stlenmek. Tm GameObjectlerinize,

    Prefablarnza; ne yapmalar gerekiyorsa ayr ayr onlar retmelisiniz. ansnza,tm ihtiyalar olan eyler Unitynin tedarik ettii Script Referans Dosyasnda siziniin bekliyor. Tek yapmanz gereken GameObjectlerinize yapacaklar davranlarnsrasna gre yazmak.

    Uygun Davranlar

    Unitynin tasarmclar epey zekiler. Sizin; oluturduunuz oyunlarnzda,GameObjectlerinize nasl davran gstermeleri gerektiini reteceinizi biliyorlar.Peki niin onlar zekilikle vdm? Bunu anlamak iin resimdeki kelimeye bakn.(behaviour: Davran) (Script Referans Dosyas)

    (Cmlenin evirisi: Scriptlemek, Unity iin; GameObjectlere (Oyun objeleri)script adndaki eitli davran (behaviour) dosyalar atamaktr.)

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    13/101

    --- yasirkula.wordpress.com---

    - 13 -

    Peki sizce de bu yntem GameObjectlere yapacamz ilemi aklamak iin zekicednlmemi midir? Onlara eitli davranlar (behaviour) kazandryorsunuz. Tpkbir ebeveynin ocuuna nasl davranacan retmesi gibi. Unity srf tm budavranlarn neler olduunu listelemekle kalmazm gibi bir de bunlar tek tek ScriptReferans Dosyasnda aklamtr.

    Bunun anlam; yapmanz gereken bu davran listesinden uygun davranlar seipGameObjectinize atamaktr. Unity tm bu davranlarn sahip olduu arprogramlama ilemini kendi halletmektedir. Yani tek yapmanz gereken istediinizdavran seip yazacanz scriptlerde kullanmaktr.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    14/101

    --- yasirkula.wordpress.com---

    - 14 -

    GameObject (Oyun Objesi): Scriptlerve Componentler (Paralar)

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    15/101

    --- yasirkula.wordpress.com---

    - 15 -

    4: Class (Snf), Component (Para) ve Script

    Her eyden nce, bu kelimelerin ne anlama geldiini bilmelisiniz. Sonra da bukelimelerin nasl kullanldn bilmelisiniz. lkokuldaykenki anlarnza dn yapn veEdebiyat rendiiniz zamanlar hatrlayn. Ne kadar da skc ders, ancak nasl yaz

    yazacanz bilmeniz asndan nemli. Belki de bu kelimelerin anlamn zaten biliyorve scriptle ne alakas olduunu anlamaya alyorsunuz. Ancak bu kelimelerscriptleme aamas iin olduka nemli ve kavranmas kolay terimler.

    Bu aamada bir scriptin ne olduuyla ilgili birka basit aklama yapacak ve birscripti oluturan iki eleman tantacam: variable(deiken)vefunction(fonksiyon). Bunlar aklamak iin genel, gnlk yaamdan rneklervererek gerekte bu terimlerin ne kadar da basit olduunu gstereceim. Sonrakiaamalarda ise bu basit konseptleri nasl kullanacamz reneceiz.

    Unity GameObject (Oyun Objesi) Referans Linki

    http://unity3d.com/support/documentation/Manual/GameObjects.html

    Class (Snf): Genel bir tanm

    Classlar Unityde nemli bir role sahiptir. imdi bir Class nedir bunu greceiz ve

    ileride greceimiz dier terimlerin Class ile olan alakalarn reneceiz. Peki nedirbu Class dediimiz ey?

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    16/101

    --- yasirkula.wordpress.com---

    - 16 -

    Basit cevap bu herhangi bir eyin tanmdr, tpk bir szlkte olduu gibi.

    Mesela szl ap da kpek ya da rdek kelimelerine bakarsanz bir kpein yada rdein ne olduunu renirsiniz. Peki kpek kelimesi iin szlkteki tanmkpek midir? Elbette hayr, Ancak szln yapt bir kpein nasl grndn

    aklamak ve kpeklerin sahip olduu temel davranlar tanmlamaktr.

    Unity cevab yle bir tanmlamadr:

    1) Veri (data) depolamak iin kullanlan deikenlerin(variable) tanmland,2) Deikenler(variable) zerinde ilem yaplmasn salayan fonksiyonlarn(function) tanmland bir terimdir.

    Baka bir deyile, bir Class (Snf) unlar tanmlamak iin kullanlr:1) Birka kelime deiken(variable)adlar; ve2) Bunlarn yapabildii bir eyler fonksiyonlar(function)

    Componentler (Para) ve Scriptler: Biraz sihire bulaalm :)

    Unity ile alrken iki tr apka giyersiniz:

    1) Bir Oyun Tasarmcs (Game-Creater)apkas; veya2) Bir Scriptleme (programc) apkas.

    Oyun Tasarmcsapkanz giydiinizde; bir GameObjecti (Oyun Objesi) seebilirve bu objeye atanm herhangi bir Componentin (Para) zelliklerini (Properties)inceleyebilirsiniz.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    17/101

    --- yasirkula.wordpress.com---

    - 17 -

    Ne zaman ki Scriptlemeapkanz giydiniz, o zaman iin boyutu deiir:

    - Bir script; bir GameObjecte eitli eyler yaptrmak iin yazlr.- Bir script kaydedildiinde, artk o scriptin ad bir Class(Snf) ad olur bir takmdeikenlerin(variable) ve fonksiyonlarn(function) depoland.

    - Bu Class(script dosyas) Project(Proje) dosyanzda depolanr, burada bo bohareketsiz bir ekilde kullanlmak iin bekler.- imdi Scriptleme apkanz karn.

    Ardndan tekrar Oyun Tasarmcsapkanz giydiinizde ve Classnz (scriptdosyas) bir GameObjecte (Oyun Objesi) atadnzda sihir etkisini gsterir;

    - Sihirli denei sallayn vee **ZINN** - artk Class(Snf) (script dosyas) objenizbir Component(Para) olarak tanmlanmakta ve Snfn(Class); public(genel)deikenleri(variable) artk Inspectorda (UNITY arayzndeki, sadaki para)greceiniz zelliklere (Properties) dnecektir.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    18/101

    --- yasirkula.wordpress.com---

    - 18 -

    5: Scriptlerde Deikenler (Variable)

    Bir deiken(variable) nedir? Teknik olarak bu, bilgisayarnzn hafzasnn; birbilgiyi barndran minicik bir parasdr. Bir oyun alrken bu deiken bilginin(information) depoland yeri, miktarn ve trn srekli gzetimi altnda tutar. Sizin

    tek bilmeniz gerekense bir scriptte bir deikenin(variable) nasl altn bilmektirki bu da olduka kolaydr.

    Bir deiken bir posta kutusuna benzer

    Bir posta kutusunun iinde hava haricinde genelde ne olur? Aslnda genelde iindebir ey olmaz, bo olur. Ancak zaman zaman iinde bir eyler olabilir. Mesela para(maa eki), halanzdan bir mektup, bir rmcek vb. Asl nokta, bir posta kutusununiindeki eyin farkl farkl olabilmesi, deiken olmasdr. Peki, biz de imdilik bu

    posta kutularn birer deiken(variable) olarak tanmlayalm.

    Bir deikenin ad

    Size yukardaki resmi gsterip de posta kutusunun ierisinde ne olduunu sorsamheralde ilk syleyeceiniz ey Hangisi? olurdu. Eer Alinin posta kutusu,kahverengi posta kutusu veya yuvarlak posta kutusu desem tam olarak hangisinikastettiimi anlayabilirdiniz.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    19/101

    --- yasirkula.wordpress.com---

    - 19 -

    Scriptlerde deikenlerle(variable) ilgili yapmamz gereken bir baka eyse odeikeni adlandrmaktr. Bylece rnein benimNumaramisimli deikende (Veyasizin uygun grdnz baka bir isim) ne depolandn bulabiliriz.

    Biraz daha teknik konuursak, deikenler; bilgisayarnzdaki birer hafza

    adresleridirler (Memory address)(Trke karln tam olarak bilmiyorum.). Nezaman ki bir deiken kullanrsak bilgisayar tam olarak hafzasnn (Memory) hangiksmna bakarak veriyi bulacan, depolayacan bilir.

    Deikenlerin (Variable) tek yapt bir verinin yerine gemektir

    Haa??? Ne???

    Resmin sol tarafndaki isimlere bakn: Sensitivity (Mouse Hassasl) X, Sensitivity Y,vb.? Bunlar bir scriptteki deikenlerin(variable) isimleridirler. Sadaki saylargryor musunuz? te onlar da bu deikenlerin(posta kutusu) ierisindedepolanan veridirler. Peki bu ey nasl alr?

    Sizin myNumberisminde bir deikeninizin(posta kutusu) olduunu varsayalm. BumyNumberdeikeninin(variable) ierisinde ise 9 rakam depolanmakta (yaniposta kutusunun iinde 9 rakam var.). u an bu say bir ey ifade etmiyor olabilir,tabi iin iine okulda grdnz cebirsel matematii koyarsanz iler deiir:

    2 + myNumber = Haa???

    Normalde rakamlarla yazlar toplayp da sonu elde edemezseniz. Ancak bu yaz birscriptin iindeki bir deikenseiler deiir. nk deikeninierisinde nedepolanmsa o deer; ilgili rakamla toplanr. Yani bu basit toplama ileminde, 9

    rakam, depoland myNumberisimli deiken nerede kullanlrsa oraya yazlr, yani:

    2 + 9 = 11

    Uzun lafn ksas, script yazarken tanmladnz deikenler(variable) basitanlamda; onlara atanan deerler iin birer yer tutucudurlar.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    20/101

    --- yasirkula.wordpress.com---

    - 20 -

    Daha Sonra

    Bylece basit anlamda deikenleri grm olduk. Onlar bir scriptte, istediinizherhangi bir veriyi depolamak iin kullanlrlar. Deikenlerbirden ok trde veridepolayabilirler, rnein yazlar, saylar ya da bir GameObjectin (Oyun Objesi)

    kendisi gibi. Deikenlerle ilgili deiken sz dizimi(variable syntax) ve birdeikene veri atamak ve o veriyi kullanmak gibi konular ise daha sonrareneceiz.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    21/101

    --- yasirkula.wordpress.com---

    - 21 -

    6: Scriptlerde Fonksiyonlar (Function)

    Fonksiyonlar asl eylemlerin uyguland yerdir. Kararlar alnr, ilemler yaplr. Birscriptin alan ksmdrlar. Bir arkadamzla sohbet ederken araya telefonun girdiirneimizde; arkadamzla sohbet etmek fonksiyonunu gerekletiriyorduk ancak

    sonrasnda, baka bir fonksiyon olan telefonla konumak fonksiyonuna geiyapmak zorunda kaldk.

    Adm, adm, kanmak, adm...

    Bir script altrlrken her satr kod dzenli olarak yerine getirilir (ilenir).

    Script alrken baz engellemeler kabilir (interruption), arkadamzla sohbetederken telefona bakmak zorunda kalmamz gibi. Arkadamzla sohbet etmekfonksiyonunu(function) gerekletiriyorduk ki bir engelleme(interruption) kt,telefonun almas. Artk baka bir fonksiyonu altrmak zorunda kaldk. Bufonksiyonun da kendine has admlar (davranlar) vardr. Bu engelleyici fonksiyonutamamladktan sonra ise arkadala sohbet etme fonksiyonumuza kaldmzyerdendevam ettik.

    Fonksiyon demek mantk demektir

    Oyun objeleri(GameObject) pek ok girdi(Input) alabilirler, bir eyle arpmak(temas etmek) (collision) veya kullancnn bir tula girdi salamas bunlara sadecebasit iki rnek. Bu girdiler belirli bir fonksiyonu, eitli eylemleri uygulamas iin ibana arrlar. Bu fonksiyonlar da scriptlerinizde oluturursunuz.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    22/101

    --- yasirkula.wordpress.com---

    - 22 -

    Bir fonksiyonun oluturulma sebebi defalarca kullanlmasndan dolaydr. Yani aynilemleri tek tek her seferinde yazmak yerine o ilemleri tek bir taycnn (container)iine yerletiririz ve bu taycya bir isim veririz. Bylece bir fonksiyonumuz olmuolur. Bu fonksiyonu bir yerde kullanmamz gerekince de orada fonksiyonun isminiyazarz ve bylece fonksiyon ilgili ksmda iini yapar.

    Daha Sonra

    lerleyen zamanlarda bir fonksiyonu nasl aracanz greceksiniz. imdilikbilmeniz gereken, bir fonksiyonun belli bir ilem kmesi olduudur ve fonksiyonlarnoluturulmalarnn sebebi ise fonksiyona yazlan ilemin defalarca kullanlacakolmasdr. Yani bir dizi ilemi kendi taycsna koyup o taycya bir isim vererekfonksiyonlar oluturmak epey akllcadr, sonradan da bu fonksiyonu; ismiyledilediimiz yerde arabiliriz.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    23/101

    --- yasirkula.wordpress.com---

    - 23 -

    7: Scriptlerde Noktasal Yap (Dot Syntax): letiim Kurmak

    Scriptimiz bir veriyi depolayan deikenlere(variable) ve bir ilemi yapmayayarayan fonksiyonlara(function) sahip. imdi sizlere bir GameObjectteki bakaComponentlerle (Para) iletiim kurmay gstereceim. Bu konuya sadece burada

    deineceim, nk Componentler aras iletiim de scriptlemenin bir parasdr.Bunun sayesinde etkileimler mmkn olur.

    Noktalarla iimiz ne?

    Bakalar tarafndan yazlm kodlara bakarsanz, birbirlerinden noktalarla ayrlan

    eitli kelimelerin birer kme oluturduklarn grrsnz. Bu da nesi? Olduka dakarmak duruyor, deil mi?

    Unitynin kendi dkmanndan basit bir rnek vereyim:

    transform.position.x

    Yukardaki kodun ne ie yaradyla ilgili kafanz yormayn, bunu sonradanreneceksiniz. Buradaki ama noktasal yapy gstermekti.

    te bu yapya Noktasal Yap(Dot Syntax) denir.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    24/101

    --- yasirkula.wordpress.com---

    - 24 -

    UnityScriptin de uyulmas gereken eitli gramer kurallar bulunmaktadr. te sizebaka bir rnek: Evimin adresi:

    USA.Vermont.Essex.22 benimSokagim

    Elenceli duruyor, deil mi? nk UnityScriptin Dot Syntaxgramerini kullandm,posta ofislerinde kullanlan grameri deil. Ancak bahse girerim biraz yakndanbakarsanz pekl evimi rahata bulabilirsiniz.

    Baka bir rnek daha. Sizinle Dnya zerinde rasgele bir yerde bulusaydk vesizden gzlm almanz isteyip u bilgiyi verseydim:

    USA.Vermont.Essex.22 benimSokagim.2nci kat.ofis.masa.orta cekmece.gozluk

    Herhalde gzlm bulurken herhangi sorun yaamazdnz, deil mi?

    Yani bu bir adres (Address) mi?

    Evet, hepsi bu. Noktasal Yap(Dot Syntax) basit anlamda bir GameObjecti,Componenti (Para), deikeni(variable) veya bir fonksiyonu(function)tanmlamak iin kullanlan adrestir.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    25/101

    --- yasirkula.wordpress.com---

    - 25 -

    8: Sonu

    Sonraki Adm

    Bu rendiiniz temel kavramlar UnityScripti anlamanz asndan ileride epey iinize

    yarayacak.

    Artk deikenleri, fonksiyonlar ve Dot-Syntax yapsn rendiinize gre gerek birscript oluturmann detaylar iin sonraki blme geebilirsiniz.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    26/101

    --- yasirkula.wordpress.com---

    - 26 -

    Deikenlere Detayl Bak

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    27/101

    --- yasirkula.wordpress.com---

    - 27 -

    9: Deikenler (Variable) ve Component (Para) zellikleri

    Oluturacanz Oyun Objeleri(GameObject), onlar ilevli klan eitli zelliklere(Properties) sahip olacaklardr. Bir GameObjecte Component eklediinizde oobjenin yapsn deitirmi olursunuz. Bu nedenle bir Componentin GameObjecte

    ekledii bilgi, Componentten bamsz bir yerde depolanmaldr, bu yersedeikenlerdir.

    Deikenin Component zellii (Property) Oluu

    Bu resim Soldier Controller (Asker Kontrolr) isimli scriptin bir parasdr.(SoldierController.js)

    1. Sol tarafta Unitynin Inspector panelinde, bu scriptin Component(Para) zelliklerigsterilmektedir.

    2. Sada ise Unitron editrnde scriptin kendisi gsterilmektedir.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    28/101

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    29/101

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    30/101

    --- yasirkula.wordpress.com---

    - 30 -

    1. Scriptte deikenin deeri 3.07

    2. Inspector panelinde ise deeri 4.53

    Burada bir yanllk m var? Hayr. Bir script olutururken tanmladnz bir deikeneatadnz deer varsaylan(default) olarak adlandrlrlar.

    Bu deeri Inspector panelinde istediiniz gibi deitirerek ilgili GameObjectinistediiniz gibi davranmasn salayabilirsiniz. Ayrca yaptnz bu deiiklik scriptzerinde herhangi bir deiiklik yapmanza da sebep olmaz.

    Siz bir deikenin deerini Inspectordan deitirdiinizde yaptnz ey o deikenindeerinin zerine yazmak(override)dr. Oyun boyunca deikenin deeri,Inspectorda deitirdiiniz deer olarak alnr, scriptteki deer ise bu ilem srasndadeiiklie uramaz.

    Not: Eer Play Mode(Oyun Modu) (Oyunu test ederken kullandnz mod)srasnda Inspector zerinde bir deikenin deerini deitirirseniz, testaamasndan knca yaptnz deiiklik kaybolur. Bu yzden eer test

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    31/101

    --- yasirkula.wordpress.com---

    - 31 -

    aamasnda bir deiken deerinde oynama yaparsanz, test aamasndankmadan nce yaptnz deiiklikleri bir kenara not edin.

    unu tekrarlamakta fayda var: Inspectorda bir ayar deitirmek scriptin kendisineherhangi etkide bulunmaz, script aynen yazdnz gibi kalmaya devam eder.

    Inspectordaki deerleri resetleyerek orijinal scriptteki deere dndrme

    Inspectordaki deerleri orijinal scriptteki deerlere dndrmek (resetlemek) iin u

    yolu izleyebilirsiniz:

    1. Componentin sandaki dili simgesine tklayn;

    2. Resete tklayn.

    Bu Inspectordaki deerleri, scriptteki deikenlerin orijinal deerlerine gerievirecektir.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    32/101

    --- yasirkula.wordpress.com---

    - 32 -

    10: Deiken (Variable) isimleri ve "eitleri"

    Daha nceden posta kutusu rneinde akladm gibi bir posta kutusu ierisindeyer alan eyin tr deiebilir (para, mektup vb.), deikenlerayrca farkl trlerdeverileri de depolayabilirler. Basit bir saydan koca bir GameObjecte veya Prefaba

    kadar pek ok eyi depolayabilirler.

    Scriptlerinize deikenler eklemek iin uymanz gereken basit bir gramer vardr.

    Bir Scriptte deiken tanmlamak

    Bir scriptte kullanlacak tm deikenler(variable) ncelikle tanmlanmaldr(declare). Peki bunun anlam nedir? Siz Unitye ne oluturmak istediinizi sylersiniz,bylece Unity oluturduunuz bu deikeni bir scriptte kullannca neyi kullandnbilir. stteki resimde 4. satra bakn.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    33/101

    --- yasirkula.wordpress.com---

    - 33 -

    Burada easyName(basitIsim) adnda bir deiken oluturduk. Bu ismin hemenbanda ise var taks var (var= variable= deiken), bu da variablenin ksaltlmhlidir. Deikenin isminin bana vartaks koymak Unitye yeni bir deikenoluturmakta olduumuzu syler.

    Yani, Unityde scriptlerimizde bir deiken kullanmadan nce Unitye bu deikenitantmalyz (Deikeni tanmlamalyz.).

    Unitye bir deikeni(variable) tantmak ilemine tanmlama(declare) denir ve builemi her deiken iin sadece 1 kere yapmanz yeterlidir. Artk easyNamedeikenimizi scriptimizin ierisinde istediimiz yerde kullanabiliriz.

    Bir tanmlamann; (Noktal Virgl) iaretiyle son bulduunu fark ettiniz mi?Unityde tanmlamalar da dhil her ilemin (statement) sonuna noktal virgliareti koymalsnz. Bunun ilevi ise Unitye o ilemin sona erdiini syleyip sonrakiileme getiimizi belirtmektir. Yoksa Unity bunu kendi bana bilemez. Bunu bir

    yazda her cmlenin sonuna koyulan nokta iareti gibi de dnebilirsiniz. Byleceo yazy okurken cmlelerin bitip bitmediini anlayabiliriz, deil mi?! Hi bir cmleyinoktasz okumay denediniz mi? Biraz garip olur, haksz mym? Aslnda zeki birercanl olduumuz iin bir yazy noktasz okumay da skebiliriz ancak Unity; birilemin nerede bittiini sylemezseniz bunu kendi bulacak kadar zeki deildir. Unitysadece bir yazlmdr.

    Unutmamanz gereken ok nemli bir noktaya deineyim, imdi syleyeceimey byk ihtimalle sizi epey artacaktr. Yukardaki resimdeki tm bu kodlarnarasnda birka tane = (Eittir) iareti gryorsunuz, deil mi? Programlamada(scriptleme) bunun anlam Eittir deildir. Bu bir atama operatrdr(assignment operator). Yani yle bir ey grdnzde;

    easyName = 10;

    Bunun anlam easyNamedeikeninin 10a eit olduu deildir. Bunun anlameasyName deikenine 10 deerinin atanddr.

    Eitlik konusunda daha sonra konuuruz.

    Yaygn Deiken (Variable) Trleri

    Burada grdkleriniz tm programlama dillerindeki en yaygn deiken trleridir.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    34/101

    --- yasirkula.wordpress.com---

    - 34 -

    Deikenin Tr

    6. satra bakn. Bu deiken tanmlamas(variable declaration) ileminde(statement) ekstradan bir ekleme var. Bu int de neyin nesi? (int= integer=tamsay)

    Bunun anlam integer(tamsay) dr.

    easyNameTyped(basitIsimTurlu) adnda bir deiken(variable) oluturdum,ardndan : (ki nokta) iareti koydum ve sonra da int taks ekledim.

    UnityScriptte bir deikeninbelli bir trde (type) veriyi depolayacan bylebelirtirsiniz. Deiken isminin ardndan iki nokta iareti koyarsnz ve ardndandeikenin trnn ismini girersiniz. Bu rnekte Unitye deikenimizin trnzellikle sylemi olduk, bir integer, yani tamsay.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    35/101

    --- yasirkula.wordpress.com---

    - 35 -

    Peki, tahminimce ilk bata yaptmz easyNameismindeki deiken(variable)tanmlamasnda neden tr(type) belirtmediimizi merak etmi olmalsnz.UnityScript biraz uyuuk olmanza izin vermektedir ve dier programlama dillerindeolan baz zorunluluklar uygulamanz zorunlu klmaz.

    UnityScript ile scriptleme yaparken Unity genelde, oluturduunuz deikeneatadnz ilk deere gre o deikenintrn kendisi tahmin edebilir. Okumayadevam edin.

    Trn tahmin edilmesi

    4. ve 5. satrlara geri dnelim.

    easyNamedeikenini tanmlarken trn(type) belirtmedim ve bu u andaUnitynin hi umurunda deil; nk henz o deikeni herhangi bir yerdekullanmadk. Sadece Unitye easyNameisminde bir deiken(variable)tanmladmz syledik. 5. satrda ise ilk defa easyNamedeikenini kullandm veona bir tamsay olan 10 saysn atadm. Artk Unity kendisi easyNamedeikeninin

    trn tahmin ederek buldu, bu bir int (integer).

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    36/101

    --- yasirkula.wordpress.com---

    - 36 -

    Trn tahmin edilmesiite byle iliyor. Deikene ilk olarak nasl bir veri atandysaona gre tr tahmin yoluyla otomatik olarak belirleniyor. Artk oyun boyunca UnityeasyNamedeikenini bir tamsay olarak grecek ve rnein bu deikene 2.3 gibikesirli bir deer atamaya kalkarsak kesirli ksm olan .3 ksmn kendisi atacak vedeikeninin deerini 2 olarak ayarlayacak.

    Ancak ben size kesinlikle UnityScript renirken deikenin(variable) trn ellegirmenizi tavsiye ediyorum, bylece oyununuzda sorun yaarsanz neredenkaynaklandn belki daha rahat bulabilirsiniz. Programlama konusunda epeyustalanca ise isterseniz uyuukluk yapabilirsiniz.

    NOT:Eer bir scriptinizin bana #pragma strict kodunu eklerseniz artk birdeiken olutururken trn de belirtmek zorunda kalrsnz, aksi hlde hataalrsnz. Gzel bir zellik.

    NOT: Ne zaman ki bir deiken bana var taks konup tanmlandktan sonra

    scriptte herhangi bir yerde kullanlrsa; artk bu, o deikenle ilem yaptmz andr.Tpk 5. satrda olduu gibi.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    37/101

    --- yasirkula.wordpress.com---

    - 37 -

    float (Kesirli Say) Tr

    15. satrda grdnz gibi float trnde bir deiken(variable) tanmlanyor.Bunun anlam deiken kesirli bir sayy depolayacaktr.

    Bu rnekte withFloatTypeddeikeninin, tanmlama(declaration) srasnda, srftrn belirlemekle kalmadm, ayrca ona tanmlama srasnda bir deer de atadm

    7.3. Bu kullanma aln nk bol bol kullanacaksnz.

    Eer ki deerini kesirsiz bir ekilde direk 7 olarak girseydim Unity bunu 7.0 olarakalacakt.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    38/101

    --- yasirkula.wordpress.com---

    - 38 -

    boolean Tr

    Bu booleanda neyin nesi? (Trke karln bulamadm.)

    Unitynin arayzndeki Inspectorpanelinde bu trde deikenler birer iaretkutucuu (checkbox) olarak gzkrler. Yani booleantrnde bir deiken(variable) ya true(doru) ya da false(yanl) deerini alabilir. Bu da Inspectordaki

    kutucuun iaretli (tikli) ya da iaretsiz olmasn salar.Bu trueve falseile daha sonra; script yazarken daha yakndan ilgileneceiz.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    39/101

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    40/101

    --- yasirkula.wordpress.com---

    - 40 -

    Public (Grnr, Ak) deikenler

    Benim az nce oluturduum deikenler(variable) birer public(kamuya ak)deikendiler. Bunun anlam o deikenlere baka scriptler tarafndan da eriimin

    ak olmasdr. Ayrca o deikenler Inspector panelinde de grnr durumdadrlar.Tek istisna 4. satrda bulunmaktadr. nk o satrdaki deiken tanmlamasnda(declaration) deikenin (easyName) trn(type) belirtmedim. Bu yzden deUnity bu deikeni Inspectorda gstermez. nk deikenin trnn ne olduuylailgili herhangi bir fikri yoktur.

    Not:Daha sonradan fonksiyonlar(function) hakknda konuurken bundan dabahsedeceim, ancak imdilik bilmeniz gereken; bir fonksiyonun iinde tanmlananbir deikenin asla publicolmayacadr.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    41/101

    --- yasirkula.wordpress.com---

    - 41 -

    Private (Kiisel, zel, Kapal) deikenler

    12. satrda kk bir deiiklik yaptm ve deiken tanmlamasnda olmas gerekenvar taksnn bana bir de private taks ekledim. Bunun anlam oradatanmladm withIntTyped isimli deikenin private(zel) olaca, yani bakascriptler tarafndan eriilemeyeceidir. Sadece deikeni tanmladm script iinde odeikene ulaabilir ve onunla ilem yapabilirim.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    42/101

    --- yasirkula.wordpress.com---

    - 42 -

    Private deikenler Unity Inspectorda gzkmezler

    Grdnz gibi; withIntTyped deikenini(variable) private(zel) yaptmziin deikenin deeri Inspectorpanelinde gzkmyor.

    Sonu

    Grdnz gibi deikenlerle ilgili renilmesi gereken pek ok konu var. Birdeiken tanmlarken yaptklarmz yle zetleyebiliriz:

    1.Deikenimin public(genel) mi yoksa private(zel) mi olmasn istiyorum?2.var taks eklenir.3.Deiken iin kurallara uygun bir isim belirlenir. (sim kkle balar ve iindeTrke karakter bulunduramaz.)4.Deikenin tr(type) belirlenir.

    5.stee bal olarak deikene bir deer atanr.6.Noktal virgl iaretiyle ilem sonlandrlr.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    43/101

    --- yasirkula.wordpress.com---

    - 43 -

    Fonksiyonlara Detayl Bak

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    44/101

    --- yasirkula.wordpress.com---

    - 44 -

    Unity'nin Update() (Gncel, Srekli yaplan) ve Start() (Balang,Tek seferlik) fonksiyonlar

    Unitynin scriptlerimizi altrmak iin kullandmz fonksiyonlar bulunmaktadr. Enyaygn olarak kullanlan fonksiyon Update()fonksiyonudur. Her yeni bir scriptoluturduunuzda bu fonksiyon da otomatik olarak scriptin ierisinde yazl olarakgelir. Ee, bu da demektir ki bu fonksiyon dehet derecede nemli. Bir bak atalm.

    Yeni bir script oluturmak

    Yeni bir UnityScript (JavaScript) oluturmak iin st taraftaki menden u yolu izleyin:

    AssetsCreate (Olutur)JavaScript

    Niin JavaScript? Unitynin resm forumlarnda bu konuyla ilgili pek ok tartmakonusu ald. ou kii bu dile JavaScript yerine UnityScript demeyi tercih ediyor,nk bu dil tam olarak JavaScript deil, ancak ok benzer yapda. Ben de bu diliUnityScript olarak adlandranlardanm.

    Bir script olutururken Assets mensn kullandmza dikkat ettiniz mi?Hatrlayn, bir scripti GameObjecte (Oyun Objesi) atadnz zaman script sihirli birekilde o GameObjectin bir Componenti (Para) oluveriyordu. Eer szl apda asset kelimesinin anlamna bakarsanz u tanmla karlarsnz: "a useful orvaluable thing or quality." (Trkesi: Deerli veya ie yarar, kullanl ey). Veelbette bir script de bir GameObjecti daha kullanl (useful) klar. :)

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    45/101

    --- yasirkula.wordpress.com---

    - 45 -

    NewBehaviourScript adnda yeni bir script oluturduk

    Bu yeni UnityScript dosyas Unitynin arayznde yer alan Project (Proje) panelineyerleti. Varsaylan olarak ismi otomatikman NewBehaviourScript olarak ayarland.

    Scriptin ismini deitirmek

    Scriptinizin ismini deitirmek iin nce onu mouse ile sein ve ardndan F2tuunabasn (MAC OS iletim sistemi kullanyorsanz Entertuuna basn.). Ardndanscriptinize ne ie yarayacan her grdnzde anlayabileceiniz, aklayc birisim verin. Bu bir eitim klavuzu olduu iin ben kendi scriptimi StudyFunctions(EgitimFonksiyonlari) olarak adlandryorum. sim deiikliini hallettikten sonra Entertuuna basarak isim deiikliini bitirin.

    (evirmen Eklemesi): Scriptlerinizi isimlendirirken, tpk deikenlerde olduugibi, Trke karakter kullanmayn. Aksi takdirde bir objeye atadnz

    scriptinizin Componentine, baka bir scriptten eriim yapamazsnz, nkkodlama dilleri kesinlikle Trke karakterleri desteklemez, hata verir.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    46/101

    --- yasirkula.wordpress.com---

    - 46 -

    Scriptimizi Scripts klasrne tamak

    1. Sadece scriptinizi mouse ile srkleyip Scripts klasrne atn.

    2. te benim scriptim.

    NOT:Eer ki sizde Scripts diye bir klasr yoksa tela yapmayn, nk bu klasrprojenize istee bal olarak eklediiniz hazr paketler vastasyla gelir ve Unityninhazr scriptlerini ierisinde barndrr. Kendiniz bir klasr oluturmak iinse yineProjectpanelinde, st taraftaki Create (Olutur) butonuna basn ve ardndanFolder (Klasr) seeneini sein.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    47/101

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    48/101

    --- yasirkula.wordpress.com---

    - 48 -

    Start(): Tek bir seferlik unu yap fonksiyonu

    Unity ierisindeki bir baka ok yaygn kullanlan fonksiyon da Start()(Balang)fonksiyonudur. Bu fonksiyon sadece 1 kere altrlr ve uygulanr.

    erisinde Start()fonksiyonu bulunan ve bir GameObjectin (Oyun Objesi)Componenti (Para) olan bir scriptteki Start()fonksiyonu, Unity tarafndan, o objeoyunun herhangi bir blmnde oluturulduu anda otomatik olarak tek bir seferlikaltrlr.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    49/101

    --- yasirkula.wordpress.com---

    - 49 -

    Fonksiyon simleri

    Klavuzun ilk blmlerinde fonksiyonlarn ne olduklar hakknda ve niin onlaraihtiyacmzn olduu hakknda konumutuk.

    imdi ise nasl fonksiyon oluturabileceinizi aama aama gstereceim.

    Fonksiyon Tanmlamak (Declare)

    Kullanmak istediiniz herhangi bir fonksiyonu (function) ncelikle tanmlamalsnz.Bunun anlam nedir? Bunun anlam siz Unitye bir dizi kod yazacanz ve bu koddizisine de bir isim vereceinizi sylemektir. Ardndan Unity siz bu fonksiyonuardnzda tam olarak neyden bahsettiinizi bilecektir.

    Hadi Start() fonksiyonuna bir bakalm. Bu sizin deil, Unitynin iinde tanmlanm

    olan ve otomatik olarak arlan bir fonksiyondur. Buna ramen bu fonksiyonuniindeki kod dizisi tamamen size baldr.

    1. Fonksiyonun ismi olan Start()tan hemen nce bir function taks getirdik. Baafunction taksn koyman Unitye yeni bir fonksiyon oluturmakta olduumuzusyler.

    2. Fonksiyon ismi olan Starttan hemen sonra iki parantez ( ) alr. Bu parantezlerinanlam, ilevi nedir?

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    50/101

    --- yasirkula.wordpress.com---

    - 50 -

    Bu parantezler bir fonksiyonun paras olmakla beraber (Yazmas zorunlu paras)bu parantezler sayesinde fonksiyonun iine zel veri (data) girileri de yapabiliriz.

    u anda kafanz paralayp ne demek istediimi kavramaya altnz grrgibiyim :) . Madem Start()fonksiyonundaki parantezlerin ierisinde hibir ey

    yazmyor, o zaman bu fonksiyona hangi veri giriyor ki?

    Aslnda hibir ey yok gibi duruyor deil mi, ancak korkmayn, adm adm bunuaklayacam.

    3. Fonksiyonun balang noktasna bir trtkl parantez { iareti koyulur,

    4. Fonksiyonun bitim noktasna da bir trtkl parantez } koyulur. NOT: Fonksiyontanmlamalar (declaration) greceiniz zere sonlarna ; (Noktal virgl)almazlar. Derleyici (compiler) bu sondaki trtkl parantezin } fonksiyonun bitinoktas olduunu anlar.

    5. Bu iki trtkl parantez (3 ve 4) arasndaki her ey fonksiyonun gvdesini(body)oluturur, buraya yazlan kodlar fonksiyon arld zaman gerekletirilir.

    NOT:Biraz kiisel bilgiye kaacak ama olsun. Ben aylar nce ilk defa fonksiyonlarrenmeye baladmda bu eyin nasl ilediini anlamak iin az daha kendimiparalyordum. Basite belirtmek gerekirse burada neler olup bittiini bir trl kafamalmyordu. Sonradan anladm ki fonksiyonlar tekrar tekrar kullanlabilen kodparalarndan ibaretmi, bu kadar basit. Buna ramen bir fonksiyonu armak veiine zel veri girmek hl kafamn basmad konulard; bunun bir dier nedeni dekitaplar yazp bu konuda eitim veren ahsiyetlerin bu konuda hi detayl bilgivermemesiydi. Bu yzden bu dersleri yazyorum, nk ben bu konuyu anlamayaalrken ok zorluklar ektim ve sizin de ekmenizi istemem. (Bu yaz evirmeneklemesi deildir, yazarn kaleminden kmtr.)

    Bir sonraki blm, yaadm sknty yaamamanz iin bu bahsettiim konuyla ilgiliolacaktr.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    51/101

    --- yasirkula.wordpress.com---

    - 51 -

    Fonksiyonlara zel Bak

    1. Bu benim oluturduum, WhereAreYou()Neredesin() ismindeki fonksiyonuntanmland ksm (Fonksiyon isimlerinin byk harfle baladna dikkat edin.).Grdnz gibi nceki blmde akladm tm paralar bu fonksiyonda damevcut.

    2. Bu sefer fonksiyonun ierisinde ekstra bir ey var. ki parantezin ortasndaparametre(parameter) denilen zel bir deiken oluturdum. (Fonksiyona zel verigirmek bu parametreler vastasyla olmaktadr.) Oluturduum bu deikeneanyVariable :String(herhangiDegisken : String) ismini verdim. Bunun anlamfonksiyona gndereceim verinin trnn Stringolacadr. Bu sayede bu Stringdeikenle fonksiyonun ierisinde eitli ilemler yapabileceim.

    Fonksiyonlar tamamen istee bal olarak, ierisine veri (data) aktarmamza yarayan

    onlarca parametreye de sahip olabilir ya da hibir parametreye sahip olmayabilir de.Her bir parametre ise , (Virgl) iaretiyle birbirinden ayrlr. Start() fonksiyonundahi parametre bulunmamaktadr, bu yzden bu fonksiyonun ierisine hibir zel verigirii yaplmaz. Ancak kendi fonksiyonum olan WhereAreYou()fonksiyonunda ise 1tane parametre bulunmaktadr.

    te benim zamannda bir trl anlayamadm ksma geldik:

    Henz acemi biri gelip de fonksiyonun ierisindeki anyVariable: Stringparametresini grnce yle der: Tamam, bu adam bu fonksiyonun ierisine zelveri sokacak ve bunu da anyVariableisimli, Stringtrndeki deikenini kullanarak

    yapacak.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    52/101

    --- yasirkula.wordpress.com---

    - 52 -

    AMA, bir de WhereAreYou() fonksiyonumun arld anlara bakacak olursak:

    3. WhereAreYou(location);4. WhereAreYou(noClue);

    Bu da nesi yahu? 3numaral ksmda fonksiyonu aryoruz armasna da ancakkullandmz parametrenin ad location(konum) ve 4numaral ksmda iseparametrenin ad noClue(Anlam: fikrimYok). Bu ne anlama geliyor, nasl alyor?Ne location, ne de noCluedeikenlerinden herhangi biri fonksiyonumdatanmlanmad (declare) ?!

    Uzuun zaman boyunca kitaplarda bu konuyu aratrmama ramen (O zamanlardahenz Google diye bir ey yoktu.) basit bir yant bile bulamamtm.

    Kimse bu konuyu aklamyordu. eitli deneme yanlma ilemleri ve kodla bol bolhar neir olma ileminin ardndan en sonunda konuyu kendim skmeyi baardm.

    Az nceki rnekte, anyVariableisimli fonksiyon parametremizin deerine fonksiyonilk arldnda (3numara) locationdeikeninin deeri neyse o atanyor, ikinciarlnda ise (4numara) noClueisimli deikenin deeri parametremize atanyor(assign).

    Daha aklayc olursak, fonksiyon ilk kez arld srada oyun motorumuzunarkaplannda u ilem gerekleiyor:

    anyVariable = location;

    ve sonraki (ikinci) arlnda ise:

    anyVariable = noClue;

    Yani anlayacanz locationdeikeninin (variable) deeri anyVariabledeikeninekopyalanyor (atanyor). Ardndan ikinci arlta da ayn ilem gerekleiyor, ancakbu sefer noCluedeikeninin deeri anyVariabledeikenine aktarlyor. Ardndanbu anyVariableparametremiz de fonksiyonumuzda kullanlyor.

    Yani bu yolla, Stringtrndeki istediim herhangi bir deiken ile fonksiyonu

    arabilirim.Ayrca bu yolla locationve noCluedeikenlerinin deerleri parametreyekopyalandiin; fonksiyon ierisinde anyVariableparametresinin deeriyle ilgiliherhangi bir oynama yapsam bile locationveya noCluedeikenlerinin deerlerinehibir etkisi olmuyor, onlar aynen kalyor.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    53/101

    --- yasirkula.wordpress.com---

    - 53 -

    Fonksiyonun arlmas ve ak

    Bir fonksiyon arld zaman, baka fonksiyonlarla dolambal etkileimlerin deolabildii basit bir ak meydana gelir.

    Hadi fonksiyonun arl aamasna bakalm

    1. Start() fonksiyonunda WhereAreYou() fonksiyonu 2 kere arlyor;

    2. Buras WhereAreYou()nun ieriinin olduu ksm; yani WhereAreYou()fonksiyonunun ne ie yarayaca buradan belirleniyor. Buradaki Debug.Log()iseUnitynin hli hazrdaki baka bir hazr fonksiyonu olup yapt ey Unitynin konsolekranna (console) kt vermektir. (kt derken yazc kts deil, ierisine girilendeeri orada gstermesini kastediyorum.)

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    54/101

    --- yasirkula.wordpress.com---

    - 54 -

    Scriptin ak emas

    Resimde sol tarafta Start() fonksiyonunun altrlma aamalar gzkmektedir.

    Sa tarafta ise WhereAreYou() fonksiyonunun altrlma aamalar gzkmektedir.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    55/101

    --- yasirkula.wordpress.com---

    - 55 -

    1. Start()fonksiyonunun ierisinde WhereAreYou()fonksiyonu 2 kerearlmaktadr. (call)

    2. Bu WhereAreYou() fonksiyonunun ilk defa altrld andr.

    3. Konsol ekranna kt vermek iin Debug.Log() fonksiyonu arlyor.

    4. WhereAreYou() fonksiyonu 2. kez arlyor (call) ve altrlyor (execute).

    5. Konsol ekranna kt vermek iin Debug.Log() fonksiyonu tekrar arlyor. (call)

    Konsol kts (Output)

    1.WhereAreYou()fonksiyonunun ilk kez arlmas sonucu oluan kt;

    2.WhereAreYou()fonksiyonunun ikinci kez arlmas sonucu oluan kt.

    Bu scripti altrmak iin nce scriptin bir GameObjecte atanmas gerekir. Ben

    bunun iin bo bir GameObject(Oyun Objesi) oluturdum yazdm scripti seipsrkleyerek objeme atadm. Ardndan Play (Oyna) butonuyla oyunu altrdm.Aldm kt da byle oldu. (stteki resim)

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    56/101

    --- yasirkula.wordpress.com---

    - 56 -

    Ya Update() fonksiyonunu kullanm olsaydk?

    Start() fonksiyonunun yerine bu sefer Update() fonksiyonunu kullandm.

    Update() fonksiyonunun kullanlmasnn sonucu

    Beklediimiz gibi, Update()fonksiyonu her bir karede altrldndan dolay konsolkts oyunu durdurana kadar (stop) srekli ayn kty vermeye devam ediyor.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    57/101

    --- yasirkula.wordpress.com---

    - 57 -

    Seimler, seimler, herzaman seim yapmak

    zorundayz

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    58/101

    --- yasirkula.wordpress.com---

    - 58 -

    if (eer)?

    Eer, eer, eer. Eer unu yaparsam eer bunu yaparsam peki eer yleyaparsam ne olur Kesinlikle eer (if) kelimesini hayatmz boyunca her gn bolcakullanyoruz. Yani zaten eer (if) kelimesinin ne ie yaradn biliyorsunuz, bu

    kelime karar vermemize (seim yapmamza) yarar.

    if ifadesi (Statement), doru (true) ya da yanl (false)

    Oyuncu bir butona bast ve kap kilitlendi. Oyuncu ld. 7>6 (7 says 6danbyktr.)

    Yukardaki gibi genel ifadeler(statement), ya dorudur (true) ya da yanltrlar(false). rnein: Ayck ormanda kendine bir ev yapt. ifadesi ya dorudur Ay evyapt. ya da yanltr Ay ev yapmad..

    Peki burada if(eer) ifadesi nerde? Hadi alttaki 2 rnee bakalm:

    Koullar (Condition)

    ifStatement.js(egerfadesi.js) adnda yeni bir UnityScript (JavaScript) oluturdum vebu scripti sahnedeki (scene) bo bir GameObjecte atadm.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    59/101

    --- yasirkula.wordpress.com---

    - 59 -

    1.nce iftaks yazdm, ardndan iki parantez ap aralarna cevabnn doru(true)veya yanl(false) olabilecei bir ifade(statement) ekledim.

    2.Eer ifade doruysa yaplacaklar (altrlacak kodlar); iki trtkl parantez arasna { } yazdm.

    1. paradaki iki adet parantezin arasna yazdmz ifadelere(statement) koul(condition) denir. Yani bir if(eer) ifadesi yle alr:

    Eer koullarm (condition) tutuyorsa o zaman iimdeki kodlar altrrm(execute).

    Bu durumda, 7>6 ifadesi daima dorudur (true), yani konsol ekranna Yes (Evet)yazs yazdrlr.

    Not:Unity size byle bir koulda(condition) bir uyar (warning) verir, der ki

    girdiiniz koul daima dorudur (true). Bu bir test olduu iin bu uyary dinlemenizegerek yok, ne de olsa ififadesi grevini yerine getiriyor. Koulun hep doru olmasnnsebebi ise 7 ve 6 saylarnn birer deiken(variable) deil de birer sabit(constant)olmalardr.

    Bu saylar asla deimez, 7 her zaman 7 olarak geer.

    Doruluu "true" test etmek

    O zaman ben nasl Ay ormanda kendine ev yapt. gibi bir ifadeyi test edebilirim?

    Bu cevab ya doru(true) ya da yanl(false) olacak ekilde yazlmaldr. Bununiin booleantipindeki deikenleri kullanrz.

    booleantrnde bir deiken kullanrz nk bir booleandeiken sadece 2 deeralabilir: trueya da false.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    60/101

    --- yasirkula.wordpress.com---

    - 60 -

    1.Peki o zaman theBearMadeBigPottyInTheWoods(ayiOrmandaBuyukEvYapti)adnda bir deiken oluturarak balayalm (Aslnda Pottynin szlk anlam delidirancak ben bunu cmleye bir trl uyaramadmdan onun yerine ev kelimesinikullandm.). Tabi ki ok daha ksa bir isim kullanabilirdim ancak byle bir ismi dahakolay hatrlayabileceimi dndm iin bu ismi kullandm.

    2.Deikenin trn booleanolarak ayarladm.

    3.Deikene true(doru) deerini atadm(assign).

    4.Bir ififadesi(statement) oluturdum ve parantezlerin arasna az nceoluturduum deikenin adn yazdm.

    Bu rnekte tabi ki ilgili koulun(condition) tutacan biliyoruz nk deikenimizeoluturma aamasnda truedeerini vermitik.

    5.Sonu olarak, Playbutonuyla oyunu balattmda konsol ekrannda "It's stinky,too" yazs belirir.

    Hatrlatma yapacak olursak, bir deiken, depolad verinin yerine geer, yani nezaman theBearMadeBigPottyInTheWoodsdeikeni bir yerde kullanlsa,deikenin yerine deeri olan truegeer. Bunun anlam ififadesindeki koul(lar)(condition) salanr ve bylece ierisindeki kod altrlarak (execute) Debug.Log()fonksiyonu arlr (call).

    Eer ki theBearMadeBigPottyInTheWoodsdeikeninin deerini falseolarakayarlasaydk o zaman koul(lar) tutmazd ve ififadesi altrlmazd; haliyle deDebug.Log()fonksiyonu altrlmaz, konsol ekranna kt verilmezdi.

    Tersini Test Etmek?

    Tersini mi test etmek? Evet, aynen yle. Bu biraz hile yapmak gibi bir ey, bu yeni

    rnekte falsedeerini truedeerine evireceiz ve bylece ififadesi altrlacak.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    61/101

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    62/101

    --- yasirkula.wordpress.com---

    - 62 -

    Bunun anlam tm koullarn (condition) deeri trueolmaldr ki ififadesi(statement) altrlsn.

    oklu koullu durumlar, ancak bu sefer birinin doru olmas yeterli

    Burada deerinin false olduu bir koul yazdm (6>7). Ardndan dier koulla arasna(||) eklemesi yaptm. Bu iaret VEYA demektir.

    Yani bunun anlam ififadesindeki sadece bir koulun salanmas ififadesinialtrmak (execute) iin yeterlidir. 6>7 VEYA!theBearMadeBigPottyInTheWoods

    Bu durumda 6>7 koulunun deeri falsedir, ancak!theBearMadeBigPottyInTheWoods ifadesinin deeri truedir. Yani ififadesialtrlr.

    altrlacak opsiyonel (alternatif) kod

    Az nce gsterdiim ififadeleri ancak ierisindeki koullar salanrsaaltrlyorlard. imdi ise bu koullar salanmazsa alternatif bir kod kmesininaltrlmasn gstereceim.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    63/101

    --- yasirkula.wordpress.com---

    - 63 -

    if-else (eer-deilse) fadesi

    1.Deikenin deerini false olarak ayarlyorum.

    2.ififadesinin az nce grdmz, normal ksmn yazyorum.

    3.else (deilse) taks ekleyerek iki adet trtkl parantez arasna { } opsiyonelkod(lar) yazyorum.

    Bu ilem olduka basit. Eer ki ififadesindeki koullar salanmazsa o zaman if

    ifadesi yerine elseifadesinin ierisindeki kod(lar) altrlr.

    Burada if ifadesi yle iler:

    If (eer) koullarm (condition) tutuyorsa benim kodlarm altr, yok eertutmuyorsa elsenin iindeki, alternatif kodlar altr.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    64/101

    --- yasirkula.wordpress.com---

    - 64 -

    Peki ya birden ok seenek istersek?

    Seimler yaparken fark edeceksiniz ki 1 veya 2 tane deil de daha ok seeneesahip sorgular ortaya kacaktr. Byle durumlarda ise basite, if-elsekodunun elseparasnn ierisine yeni bir if-elseifadesi koyarak oklu seenee sahip sorgularoluturabilirsiniz.

    Buna "nesting" denmektedir (Szlk anlam: Yuva kurmak, yuvalama).

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    65/101

    --- yasirkula.wordpress.com---

    - 65 -

    if-else-if-else... (eer-deilse-eer-deilse)

    if-elseifadelerinin(statement) saysn istediiniz kadar yapabilirsiniz ve her ififadesi iin istediiniz koullar(condition) kullanabilirsiniz.

    1.lk ififadesi

    2.lk elseifadesi

    3.kinci ififadesi

    Bu ikinci ififadesinin; ilk elseifadesinin ierisinde yer aldna dikkat edin. (#2)

    4.kinci elseifadesi

    Bu rnei altrdmzda alacamz konsol kts "The polar bear goes in theocean" olacaktr nk iki ififadesinin ikisinin de ierisindeki koullar tutmamaktadr,ikisinin de deeri falsedir (yanl). Peki niin? nk hemtheBearMadeBigPottyInTheWoods, hem dethePolarBearMadeBigPottyOnTheIcedeikenlerinin ikisinin de deeri falseolarakatanmtr (assign).

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    66/101

    --- yasirkula.wordpress.com---

    - 66 -

    Not:

    5.Grdnz gibi iki deikenin de oluum aamas kodlarn Start()fonksiyonununierisinden kardm. Bylece deikenler public(genel, grnr) hle geldiler veartk Unitynin Inspectorpanelinde deerlerini elle deitirebilirim. Bu yolla

    Inspectordan deikenlerin deerlerini istediiniz gibi deitirerek konsol ktsnnnasl deitiine bakmanz tavsiye ederim.

    booleann dndaki trlerde deikenlerle koullama ilemi

    Size gsterdiim tm rneklerdeki deikenlerin trleri booleanidi, deerleri desadece trueveya falseolabiliyordu. Bu da ififadesinde koullarn trueveya falseolarak snanmasn epey kolaylatryordu.

    ififadesinin ierisinde istediimiz trde deikenleri koul olarak kullanabiliriz. Pekibunu nasl yaparz?

    Hayatnzda hi herhangi bir insana cevabnn doru (true) veya yanl (false)

    olabilecei bir soru sordunuz mu? Elbette sordunuz. imdi yapacamz ey de tamolarak bu.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    67/101

    --- yasirkula.wordpress.com---

    - 67 -

    "= = " eitse iareti

    1.theSeasonOfTheYearadnda yeni bir deiken oluturup trn String(Yaz)olarak ayarladm ve deerini de summer (yaz mevsimi) olarak atadm(assign).

    2.theSeasonOfTheYeardeikenini koul (condition) olarak snayan yeni bir ififadesi(statement) oluturdum.

    3.ki adet eittir iareti ( ==) kullandma dikkat edin. te bu sorgularda Eitseanlamnda kullanlr.

    Peki nasl theSeasonOfTheYear== summer ifadesinin sonucu doru (true) oldu?Bunu basit bir rnekle aklayaym:

    6 == 6

    Bunun anlam 6 eitse 6. Peki sizce bu true(doru) bir ifade midir? Elbette. Pekibir de una bakn:

    "summer" == "summer"

    Bu da eittir, deil mi? Peki, syler misiniz theSeasonOfTheYeardeikenindehangi veriyi (deer) depolamtk? 1. maddeye bakarsak bunun summer yazsolduunu grebiliriz. O zaman;

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    68/101

    --- yasirkula.wordpress.com---

    - 68 -

    theSeasonOfTheYear == "summer"

    ifadesi de doru (true) bir ifadedir.

    Yani anlayacanz zere ififadesi ierisinde herhangi trde deiken koul olarak

    kullanlabilir ve bu koulun deerini test etmek iin de ( ==) iareti kullanlr.

    Not:

    theSeasonOfTheYear deikeninin deeri ayrca Inspectorpanelinde degzkmektedir. Eer ki bu deeri deitirip summer haricinde bir ey yaparsanz ififadesindeki koul tutmaz ve sonu olarak kodlarn hi biri altrlmaz ve konsolekrannda da hibir kt alnmaz. Neden peki?

    nk 2. maddede oluturduumuz ififadesi tek bana bir ifadedir, bir if-elseifadesideildir. Bu yzden koullar tutmazsa altrlacak alternatif bir kod da

    belirtilmemitir.

    Baka Bir Not:

    Tm bu rnekler aslnda gayet basitti, ancak grdnz zere eer ok fazla saydaif-elsekullanmaya balarsanz epey karmak grnen kodlar elde edersiniz, oysakikodlarnz olduka basit olmasna ramen. Ben script dosyamn ierisinde herhangibir yorum (comment) ifadesi kullanmadm ( ki adet Slash // iaretiyle balaypardndan script ierisinde altrlmayan, sadece yorum eklenmesini salayanyazlar.). Ancak sizler kendi kodlarnzda bolca yorum eklemesi yapn, byleceuzunca bir sre sonra kodu atnzda kodun ierisinde nelerin dndn anlamakiin kafanz yerden yere vurmazsnz.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    69/101

    --- yasirkula.wordpress.com---

    - 69 -

    Dot Syntax (Noktasal Yap):Componentler (Para) Aras

    letiim

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    70/101

    --- yasirkula.wordpress.com---

    - 70 -

    Scriptten darsyla iletiim

    Scriptler pek ok ey yapabilir ve bir scriptin asl gc, oyuncuyla ya da bakaGameObjectlerle temasa geince bir eyler yaptrlmasyla ortaya kar. Bu yzdenGameObjectlerin kendi aralarnda iletiim kurmalarnn bir yolu olmal, deil mi? te

    burada devreye Dot Syntax(Noktasal Yap) girer.

    Dot Syntax bir adresi temsil eder

    Konuya devam etmeden nce klavuzun balarndaki, bu konuyla ilgili yaptmz ilkbak dosyasna bakmanz tavsiye ederim.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    71/101

    --- yasirkula.wordpress.com---

    - 71 -

    Dot Syntax leminin Basitlii (Yalnl)

    Postaneden gelen mektuplarnzda yazlmas zorunlu olan adres formatna epeyalksnzdr heralde.

    UnityScriptin de uyulmas gereken bir adres format vardr. Bu formatla bakacomponentlerdeki (para) deikenlere(variable), fonksiyonlara(function)kolayca eriebilirsiniz. Ne zaman ki Dot Syntax kullanyorsunuz, o zaman baka birscriptteki bir deikene ya da fonksiyona ulamaya alyorsunuz demektir.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    72/101

    --- yasirkula.wordpress.com---

    - 72 -

    Bir scriptte Dot Syntaxn kullanm

    1.Burada grdnz script, bir GameObjecti kendi ekseni etrafnda bir tam turdndrmeye yarayan 3 scriptimden birisidir. Script tamamlandnda, bu sefer bakabir GameObjectin kendi etrafnda dnmesini salar. Bunu da dier GameObjecttekibir deikene ulap onun deerini deitirerek yapar.

    2.Buras da az nce bahsettiim 3 scriptin olduu ksm. Her bir script farkl birGameObjectin dnmesini salyor. Bu objeler ise: bir yumurta (egg), bir kapsl(capsule) ve bir silindir (Cylinder). Bunlar; srf elence iin, kullandm geometrikekillerin isimleri kullanlarak isimlendirildi.

    Sizin de grdnz zere bu scriptin byk bir ksmnda Dot Syntaxiletiimi

    kullanlarak eitli deikenler okunmakta (read), deimekte ve fonksiyonlararlmaktadr (call). Benim yazdm 3 script de birbirine olduka benzer, aralarndasadece birka basit farkllk bulunmaktadr.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    73/101

    --- yasirkula.wordpress.com---

    - 73 -

    Projeden rnek bir grnt

    Bu grnt Game (Oyun) penceresinde, oyunum alrken alnmtr. u an yumurta(egg) dnmektedir. Her bir GameObject bir kere srayla dner ve ardndan ilemtekrar balar. Ayrca dnmekte olan objenin etrafnda bir k halesi oluur.

    Eer bu ilemi bir video olarak grmek isterseniz u linke tklayn:

    http://www.youtube.com/watch?v=aNfz1ID_v2w

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    74/101

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    75/101

    --- yasirkula.wordpress.com---

    - 75 -

    3. Satr: Sonraki dnecek GameObjecti depolayacak bir yer

    Bu otherObject(digerObje) adndaki privatebir deiken. Bu deikenin trgrdnz zere GameObject. Bunun anlam bu deiken, yumurtadan sonradnecek olan GameObjectin ismini depolayacaktr.

    Bu privatebir deiken olduu iin deeri Inspectorda gzkmez, ancak dier 2scriptte bu deiken privatedeildir. Bunu sonra aklayacam.

    5. Satr: sonraki dnecek GameObjecti ayarlamak

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    76/101

    --- yasirkula.wordpress.com---

    - 76 -

    Burada otherObject deikenimize CapsuleGameObjecti atanyor.

    Ayrca ilk Dot Syntaxmz da burada gryoruz: GameObject.Find()

    (Buraya tklayarak) Unitynin web sitesinde yer alan Script referans dosyasndan,bununla ilgili bilgi bulabilirsiniz.

    GameObject.Find()

    Peki bu ey ne ie yarar? Eer referans dosyasna bakarsanz greceiniz zereburada kullandmz fonksiyon; ierisine yazdmz isme sahip bir Game Objectbulup onu geri dndrmeye (return) (Rotate deil! Programlama dilinde yer alan

    dndrmek) yarar. Bizim de istediimiz tam olarak bu. Yumurtadan sonra dnecekGameObjecti belirlemek zorundaydk ve de belirlemi olduk.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    77/101

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    78/101

    --- yasirkula.wordpress.com---

    - 78 -

    GameObject.Find() fonksiyonunu nasl kullanrm?

    Burada ilk grdm ey bu fonksiyonun static(durgun, deimez) bir fonksiyonolduudur. Bunun anlam bu bir global(evrensel) fonksiyondur ve kendi

    oluturduum herhangi bir scriptten bu fonksiyona eriim salayabilirim.

    Ardndan fonksiyonun adn gryorum: Find()Bul(). Parantezlerin ierisine debulmak istediimiz GameObjectin ismini (name) yazyoruz. Bizim istediimGameObjectin ad Capsule.

    Ayrca namedeikeninin bir Stringolduuna dikkat edin. Yani objemizin isminiyazarken iki adet trnak iareti ( ) arasna yazmalyz.

    Son olarak gryorum ki bir : (ki nokta) iareti var ve ardnda da GameObjectyazyor. UnityScriptin size ne tr bir veri dndreceini buradan grrsnz. Yani bufonksiyon bir GameObjecti dndryor (return). GameObject.Find()fonksiyonunuarmamzn btn anlam burada, Capsuleisimli GameObjecti bulup otherObjectisimli deikenin ierisinde depolamak iin.

    Referans dosyasnda GameObject.Find() ile ilgili daha ok bilgi

    Burada referans dosyas bize, bu GameObject.Find()fonksiyonunu Update()fonksiyonu ierisinde kullanmamamz tavsiye ediyor. Bylece oyunumuzdan dahaok performans alacamz sylyor.

    Sonrasnda da bir rnek gsteriyor. Bu rnek tam da bizim kullandmz kodlarlaayn, bir tek deiken ismi ve GameObjectin ismi farkl.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    79/101

    --- yasirkula.wordpress.com---

    - 79 -

    Yumurta (Egg) scripti, 7 11 aras satrlar, Update() fonksiyonu

    Update() fonksiyonu asl aksiyonun yapld ksmdr

    7. Satr:

    Buraya yazdmz Update()fonksiyonunun ierisine yazdmz kodlar oyunsrasnda Unity tarafndan her bir karede otomatik olarak altrlmaktadr.

    9. Satr:

    Bu ififadesi spindeikeninin deerinin true(doru) ya da false(yanl) olduunu

    test ediyor. Bu deiken 1. satrda trueolarak tanmlanmt (declare), bunun anlambiz spindeikeninin deerini falseolarak ayarlayana kadar da oyun srasnda herkarede buraya yazacamz kodlar tekrar ve tekrar altrlacaktr (execute).(Deikeni 17. satrda falseyapmaktayz.)

    Balangta spindeikeninin deerini trueolarak ayarlamamn sebebi, oyunbaladnda elimdeki 3 adet GameObjectten tekinin ilk bata dnmesiningerekmesiydi ve bu obje de yumurta (egg) olacak. Eer tm 3 scriptimdeki budeikenin deerini falseolarak ayarlasaydm o zaman oyunumu altrdmdahibir ey gereklemezdi.

    spin bir mekanizmann dmesi gibi. Ak olduunda (true) yumurta dner (rotate),kapattmzdaysa (false) dnmeyi durdurur.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    80/101

    --- yasirkula.wordpress.com---

    - 80 -

    11. Satr:

    Burada bir baka Dot Syntaxla karlatk.

    11. Satr: Light (Ik) componentinin (para) almas (aktive edilmesi)

    (Buraya tklayarak) Unity referans dosyasndaki Light classn grebilirsiniz. Sayfann

    yarsna doru Inherited Variables(Kaltm (Miras) Deikenler) ksmngrebilirsiniz. Buradaki enableddeikeni TwirlEgg scriptindeki tm k faaliyetleriniamamza ya da kapamamza yaramaktadr.

    Light (Ik) iaret kutucuu (checkbox)

    Bu, 11. satrda enable(ak) hle getirdiimiz Lightcheckbox. Oyun boyuncayumurta dnerken ve dururken bu kutucuun iaretinin srekli deitiini grrsnz.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    81/101

    --- yasirkula.wordpress.com---

    - 81 -

    Yumurta (Egg) scripti, 13. satr, Yumurtay Dndrmek

    Yumurtay Rotate() fonksiyonu ile dndrmek (Rotate)

    Tekrar Dot Syntaxkullanyorum, bu sefer Transformclassnda (Buna uygun birTrke karlk bulamyorum. Ancak bu ok temel bir classtr ve bununla objeninkonumunu, eimini (asn)(rotation) deitirebiliriz.) bir fonksiyona erimek iinkullanyorum.

    Dot Syntax kullandk, nk Rotate()fonksiyonu TwirlEgg scriptimiz ierisindetanmlanm bir ey deil.

    Unity bunu da baka bir yerde kodlam, kullanma hazr olarak bulundurmaktadr.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    82/101

    --- yasirkula.wordpress.com---

    - 82 -

    Egg (Yumurta) GameObjectinin Transform componenti (Para)

    Her GameObjectin bir Transformcomponenti vardr. Bu component onlarnsahnede nerede bulunduklarn ve hangi eimle durduklarn belirler. Bizim tekyapmamz gereken Transformcomponentinde yer alan Rotate()fonksiyonunuarmak (call). Bunun iin de Rotate()fonksiyonunun bana transform taks vebir nokta . ekliyoruz. Bylece kodumuz Dot Syntaxa uyumlu olarak, sorunsuz birekilde alacak.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    83/101

    --- yasirkula.wordpress.com---

    - 83 -

    1.Rotate()fonksiyonu iin parametreleri (parameter) gsterir.

    2.Fonksiyonun kullanmna bir rnek verilmi burada. Benim yaptma oldukayakn bir ilem yaplm bu rnekte de. 13. satrda, Zekseni (axis) etrafnda saniyede60 derecelik bir dn (rotate) salyorum.

    Buradaki Time.deltaTimen anlam ise 1 saniyedir. Yani 13. satrda sylediim eyyumurtann saniyede60 derece dnmesidir (Her bir karede deil!). Yani yumurta 6saniyede 360 derecelik tam bir tur atm olacak.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    84/101

    --- yasirkula.wordpress.com---

    - 84 -

    Yumurta (Egg) scripti, 15. satr, Eimi (Rotation) zlemek

    15. satr yumurtann (Egg) ka derece dndn gstermektedir

    Bu yumurtann ka derece dndne bakan bir if ifadesidir (statement).

    Elbette ki eimin depoland yer de yine Transformcomponentidir. eulerAnglesegelirsek Nedir bu eulerAngles??

    Bunun iin Wikipediaya bakmak zorunda kaldm. Aldm bilgiye gre diyor ki Eulerangles(Euler alar??) bir rigidbodynin (sert gvde, yani bir objeye arlk verenpara) eimini(orientation) aklamak iin Leonhard Eulertarafndan

    kefedilmitir.. Bu bilgi olduka ak, deil mi? Ardndan Unity klavuzundaki birkarnee baktm ve bu eyin (Deiken? Evet.) tam istediim grevi yerine getirdiinianladm.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    85/101

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    86/101

    --- yasirkula.wordpress.com---

    - 86 -

    Peki niin 360 derece deil de 358.5 derece? nk 360 derece 0 dereceye eittir, oyzden 359 dereceyle test yapabilirdim. Ancak sonradan fark ettim ki rotasyon tamsaylar hlinde gereklemiyor. Bir miktar kesirli olarak ilerliyor. Bunun nedeni eminimTime.deltaTimeifadesini kullanmamdr. Bu yzden de neredeyse 359 derece olanbir deer setim. Bu ok bilimsel bir ey olmad iin 358.5 dereceyi setim ve ie

    yarad.

    Eim(Rotation) 358.5 dereceye veya daha yukarsna gelince ififadesi (statement)true(doru) olmakta ve ierisindeki kod(lar) gereklemektedir (execute).

    (evirmen Eklemesi) : Yazar saolsun burada da ok aklayc bir anlatmsergilemiyor. Burada anlatmaya alt ey u: Objemizin Z eksenindeki eimi 360dereceye veya yukarsna karsa Unity bu deerden otomatik olarak 360 karr,mesela amz 363 ise Unity hemen bunu 3 olarak ayarlar. Anlayacanz bir objeninas hibir zaman 360 derece veya yukars olamaz. Bu yzden 359 dereceyideneyebilirdik demi ama olmad demi. Burada olmamasnn sebebi ise u: Obje

    saniyede 60 derece dnecek ekilde ayarlanm, bunu her karede hesaplayan Unity;bir karede dndrlecek a deerini 1 dereceden fazla buluyor. Bu yzden de ouzaman 359 derece tutmaz. 358.5 dereceyi denediinde ise tutmu, bu bir denemeyanlma meselesi. Ancak rnein objemiz saniyede 180 derece dnseydi o zaman358.5de byk ihtimalle tutmazd, 355 gibi bir deerle test etmek zorunda kalrdk.Umarm bu konu anlalmtr.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    87/101

    --- yasirkula.wordpress.com---

    - 87 -

    Yumurta (Egg) scripti, 17 23 aras satrlar, Dndrmeyi Durdurmak

    Artk Egg (yumurta) objesi 1 tam tur attna gre onu dndrmeyi durdurmann vesonraki objeyi dndrmeye balamann vakti geldi.

    17 19 aras satrlar: Dndrmeyi durdur ve kapat

    17. Satr:

    9. satrda spindeikeninin deeri trueidi. Bylece yumurta objesi dnyordu veetrafnda bir k halesi (halo) bulunuyordu. imdi bu spindeikeninin deerinifalseolarak ayarladm.

    19. Satr:

    11. satrda aktif etmitik. imdi bu deeri falseolarak ayarlayarak kapatyoruz, bylece objenin etrafndaki hale yok olacak.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    88/101

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    89/101

    --- yasirkula.wordpress.com---

    - 89 -

    Ay 0 dereceye resetlemek

    1.Bu az nceki gsterdiim dkmanla ayn yer. Bu sefer sadece ihtiyacmz olanksmn kesip gsteriyorum. Bu tm 3 eksendeki (x,y,z) alar da belli birer deereayarlamamz salayan kodun rnek bir kullanm. Tmnn de 0a ayarlandnaemin oluyorum.

    2.Burada alar ayarlamadan nce bir uyar verilmi. Dediine gre alar tek tekdeitirmeye kalkarsak istenmeyen sonular alabilirmiiz. Ben de bu blmokumadan nce srf Zeksenindeki ay deitirmitim, aslnda ie yaramt ancaksonradan kodu burada tavsiye edildii gibi dzelttim. (Kodu 21. satrda grebilirsiniz.)

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    90/101

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    91/101

    --- yasirkula.wordpress.com---

    - 91 -

    TwirlCapsule scripti ve spin deikeni

    Burada TwirlCapsulescriptini gryorsunuz. Burada grdnz spindeikeninin

    deerini az nce trueolarak ayarladk. Bu script TwirlEggscriptine oldukabenzemektedir ve ayn ii yapmaktadr.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    92/101

    --- yasirkula.wordpress.com---

    - 92 -

    TwirlEgg scriptine geri dnelim

    1.Dot Syntaxta yapm olduumuz ilk i CapsuleGameObjectini hedeflemekti(address). Bunu depolayan deiken ise otherObjecttir.

    2.Bu deikene burada atamtk Capsule GameObjectini.

    Bunun anlam ne zaman otherObjectdeikenini kullansak, aslnda CapsuleGameObjectiyle i yapm oluyoruz.

    3.Dot Syntaxn sonraki aamasnda ise Capsuleobjesindeki TwirlCapsulecomponentine (para) gei yapyoruz (address).

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    93/101

    --- yasirkula.wordpress.com---

    - 93 -

    (Buraya tklayarak) GetComponent hakknda bilgi edinebilirsiniz.

    1.Burada 23. satrda yaptmza benzer bir rnek var. Bu rnekte otherisimli birdeikene, bir objedeki bir script depolanmaktadr.

    Biz ise 23. satrda bu scripti herhangi bir deikene atamyoruz.2.GetComponent(TwirlCapsule) bir Componentdndrmeye (return) yarar, bizimrneimizde dndrdmz component TwirlCapsulescripti. Bizim yaptmz eybu componenti bir deikene atamak yerine direk Dot Syntaxn bir paras olarakkullanmak. Bu componenti nce bir deikene depolayarak fazladan kod yazmaygerektirmenin bir anlam yok.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    94/101

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    95/101

    --- yasirkula.wordpress.com---

    - 95 -

    Ustaca dnlm bir Unity zellii (feature)

    TwirlEggscriptinin 5. satrnda Capsule GameObjectini GameObject.Find()fonksiyonuyla buluyorduk. Ancak dier iki script (TwirlCapsuleve TwirlCylinder)GameObject.Find()fonksiyonunu kullanmamaktadrlar. Dier objeyi bulmak iin

    baka bir kod da kullanmyorlar, ancak buna ramen uygulamam mkemmel birekilde alyor. nk o scriptlerdeki atama(assign) ilemini script kullanarak deilde Unitynin Inspectorpanelini kullanarak yaptm.

    Bu teki 2 scripti oluturmamn sebebi Inspectorvastasyla srkle-brak (drag-drop) yoluyla atama yapmay gstermekti.

    Not:

    Normalde bu 3 GameObjectiin de tek bir script yazmam yeterliydi, deerleri deInspectordan atama yaparak halledebilirdim. Ancak bu bir eitim klavuzu olduuiin 2 yolu da gstermek istedim ve onun iin bu uzun yolu setim.

    Scriptlerdeki farkllklar

    Bu resim 2 scriptin de ilk satrlarn gsteriyor.

    1.TwirlEgg scripti

    2.TwirlCapsule scripti

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    96/101

    --- yasirkula.wordpress.com---

    - 96 -

    imdi srada spindeikeninin tanmlanma(declare) ksm var:

    3.Egg (yumurta) scriptinde bu deer true, nk oyun baladnda bir objenin ilknce dnmeye balamas lazm.

    4.Capsule (kapsl) scriptinde ise bu deer false.

    imdi otherObjectdeikenine sonraki GameObjecti atamaya gelirsek:

    5.Egg scriptinde sonraki obje olarak Capsuleobjesi atanyor, bylece yumurtadansonra kapsl objesi dnmeye balayacak.

    TwirlCapsulescriptinde herhangi bir atama ifadesi olmadna dikkat edin.

    private (zel) deiken public (genel) deikene kar

    Niin TwirlCapsule scriptinde otherObject deikenine herhangi bir GameObjectatamas yaplmyor?

    nk bu atama ilemini Inspectordan elle yapacaz. Bu zellik sayesinde daha

    esnek alabilir ve daha hzl olabiliriz. Ayrca bir deiiklik yapacamz ou zamanda bu orijinal kodu deitirmemize de gerek kalmaz.

    Bu ilemi Inspectordan yapabilmemiz iin deikenin(variable) de Inspectorpanelinde gzkmesi lazm.

    1.TwirlEggscriptinde otherObjectdeikeni private, bunun anlam bu deikenInspectorpanelinde gzkmez.

    2.Burada ise deiken privatedeil, yani public. Bu yzden bu otherObjectdeikeni Inspectorda gzkr.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    97/101

    --- yasirkula.wordpress.com---

    - 97 -

    Atama (assign) yapmak iin srklemek yeterli

    Capsuleobjesi dnmesini tamamladktan sonra Cylinder(silindir) objesi dnmeyebalayacaktr.

    Cylinderobjesi otherObjectdeikenine ok basit bir ekilde atand. Tek yaptmzCylinderobjesini Hierarchy(Hiyerari) panelinden tutup srkleyerek Inspector

    panelindeki otherObjectdeikeninin deerinin olduu yere brakmakt. UnityninotherObjectdeikeninin ismini 2 kelimeye ayrdna dikkat edin: Other Object.

    Tamamdr! Cylinder GameObjectinin scriptte herhangi bir ekilde yer almadndert etmenize bile gerek yok. Ayrca atama (assign) ilemi script zerinden yaplmolsayd bile baka bir objeyi Inspectorpanelinde deikenin zerine srklemek;scriptteki objeyi geersiz klp (override) srklediimiz yeni objenin esas alnmasnsalar.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    98/101

    --- yasirkula.wordpress.com---

    - 98 -

    Inspectoru ve tek bir scripti kullanarak ayn ilemi yapmak

    Bu blmde 3 scripti de sildim ve yerlerine tek bir script oluturarak 3 objeye de oscripti atadm: Twirl.js

    Ayrca spindeikenini de public(genel) yaptm, bylece deeri Inspectordagzkebilecek. Ayrca bylece ilk hangi objenin dneceine de karar verebiliriz.

    1.Artk spindeikeni publicve bylece Inspectorpanelinde de gzkecek. Ayrcadeeri de imdi false.

    2.otherObject deikeni de artk public, bylece bu deiken de Inspectordagzkecek.

    3.Artk 3 obje iin de farkl bir script kullanmak yerine hepsi iin Twirlscriptinikullandm.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    99/101

    --- yasirkula.wordpress.com---

    - 99 -

    Inspector zellikleri

    Bu, Egg (yumurta) GameObjectinin Twirlcomponentinden (para) bir grnt.Spindeikeninin iaretli olduuna dikkat edin. Bu ona scriptte ayarlanm olan falsedeerinin zerine geer (override) ve onu etkisiz klar. Bunun anlam oyunbaladnda yine ilk olarak yumurta objesi dnecektir.

    Yumurtann dnmesi tamamlannca da otherObjecte atadmz CapsuleGameObjecti dnecektir.

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    100/101

    --- yasirkula.wordpress.com---

    - 100 -

    Tebrikler, artk scriptlemeninen nemli temel bilgilerini

    biliyorsunuz

  • 8/13/2019 Unity3d icin UnityScript Dersleri.pdf

    101/101

    Srada ne var?

    Artk deikenler (variable), fonksiyonlar (function) ve temel iletiim (communication)prensipleri ile ilgili nemli temellere sahipsiniz, bylece ou scriptleme korkunuzungittiini dnyorum

    Daha ok renme

    Grdnz her trl scripte artk ok zorlanmadan bakabilirsiniz. Baz scriptlergerekten uzun olabilir ancak onlar da temellerinde sadece deikenlerden,fonksiyonlardanve Dot Syntaxtan oluuyor. Artk en uzun scripti bile bu basitbilgilerden yola karak yorumlamaya balayabilirsiniz.

    Bu temel klavuz ou dier zelliklere deinmedi, dngler (loop) ya da arraylargibi (Trke karln bilmiyorum.). Ancak zaten bu klavuzun amac da o deildi.

    Buna ramen grdnz her script eitim dosyasna (tutorial) bakmanz tavsiyeederim, artk baka tutoriallere bakarken de pek zorlanmazsnz zaten.

    Ben de daha fazlasn yapmay planlyorum

    Ben de bu yolda daha fazla tutorial oluturarak scriptlemenin daha derinlerine inmeyidnyorum. Derslerin ou video olarak verilecektir, ancak kimisi de bunun gibi birklavuz olarak. Ancak dikkat edin, yeni eitim dosyalarmn bir ksm cretsiz olurkenbir ksm da paral olacaktr.

    (evirmen Eklemesi) : Artk biz de bele olan eitici klavuzlarn eviririz.

    Bir eitim dosyasnn daha sonuna geldik. Daha fazla ders iin her zaman sitemiziyaret edebilirsiniz:

    http://yasirkula.wordpress.com/

    Bu tip eitici projelerin devam iin alnt yapmamaya dikkat edin. Eer alntyaplrsa da o; yapann vicdanna kalm. Baka derslerde grmek zere!