maandag 9 november 2015

C# unity intermediate programming



Link


Waarom deze tutorial?

Het leek me erg handig om voordat ik met de eindopdracht game verder te gaan me eerst wat beter te verdiepen in wat er allemaal kan met C#. Daarom ga ik deze intermediate tutorial volgen en daarna de advanced tutorial.

Het is een lijst van tutorials die ik hieronder los ga behandelen.

Wat heb ik er mee gedaan?

Ik heb de laatste video meegedaan in unity, deze vat alle lessen uit de reeks samen.

Door mee te doen met deze tutorial kon ik nog beter begrijpen wat er bedoeld werd met alles. Daarnaast heb ik nog wat extra's toegevoegd. De tutorial liet text alleen in de debug zien, ik heb toegevoegd dat hij deze naar een text op het beeldscherm door stuurt. Op deze manier kan je in de .exe ook zien wat het resultaat is naast de project file.



Wat heb ik er van geleerd?



Functions or Methods?

Voor deze tutorial dacht ik dat functions of methods heel erg verschilde van variabelen, wat dus niet zo is. Een functie is gewoon een uitgebreidere variable die je van ergens anders kan oproepen en aanpassen. 

Functions en methods zijn eigenlijk het zelfde maar worden voornamelijk gebruikt om de update function schoon te houden zodat deze niet helemaal vol komt met van alles en nog wat.

Met een void kan je iets laten doen zonder dat je iets terug verwacht, maar je kan ook een int uitsturen en iets terug verwachten, dit is handig.


Classes

Wat classes zijn had ik al een beetje geleerd van de eerste tutorial die ik gekeken heb, maar deze persoon legt het op een andere manier uit. Hij geeft als voorbeeld dat je classes kan gebruiken om items te bewaren, in plaats van dat je een script hebt met 100 stukken van 10 regels om elk item uit te leggen, je het een keer kan maken met een class en dan kan invullen in de inspector (of via script).

Deze manier van het gebruik van classes had ik nog niet bedacht.


Constructors

Met constructors kan je waardes geven aan een class. Op deze manier kan je items maken met een class en dan elke item invullen doormiddel van constructors. 

In plaats van dat je dus heel veel keer dezelfde code gebruikt om een item te maken houd je het heel compact. Je kan dan in code zeggen wat voor waardes de items moeten hebben. Daar zijn constructors voor.


Static types

Je kan elke variable static maken, dit betekend dat je hem kan aanspreken van elk ander script. Dit is handig maar daarnaast is de static gevult voor de rest van de game en kan dus niet meer gebruikt worden. Ook is het redelijk zwaar. Het wordt vaak gebruikt door luie mensen omdat het niet vereist om alles door te linken.


Properties

Met properties kan je zorgen dat een variable aangepast of alleen bekeken kan worden wanneer jij dat wilt. Je kan zelfs een private variable maken in een script en die een public get en set geven zodat hij in een ander script aangepast of bekeken kan worden.

Private variables zijn ook beter om te gebruiken dan public, dus gebruik veel properties.


Singleton manager

In deze tutorial wordt verteld wat een singleton is en hoe je hem gebruikt door middel van een game manager. Een singleton is iets wat maar een keer voorkomt en wordt dus gebruikt door dingen die maar een keer in de game voor komen, zoals een game manager of een spawner. 

De singleton die uitgelegd werd in de video was het gameobject die controleerde of hij al bestond, waneer dit niet zo was maakte hij zichzelf aan.


Namespaces

Namespaces zijn een soort library waar je dingen vandaan kan halen, in deze tutorial legt hij uit hoe je een library kan maken. 

Met een library kan je eigenlijk gewoon een stukje code maken die je in elk script kan inladen. Je moet wel elke keer 'usign' en dan de naam intypen om hem te gebruiken. Dus om dit goed te kunnen gebruiken zou je het vaak moeten nodig hebben.


Practical

In deze tutorial worden alle onderdelen die hierboven behandeld zijn in de praktijk gebracht. Ik heb met deze tutorial meegedaan en kon hierdoor alle bovenstaande punten in de praktijk aan het werk zien wat erg interessant was, ik heb hierdoor veel geleerd.