zaterdag 14 november 2015

c# Unity3D Tutorial Series (miscellaneous)


Link


Waarom deze tutorial?

Na het kijken van de intermediate en advanced reeks van de tutorials werd ik erg gemotiveerd. Ik heb veel nieuwe dingen geleerd. Om mijn basis kennis van unity nog meer te verbeteren ga ik ook de overige lijst kijken. Het bestaad uit een lijst van belangerijke informatie.

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

Wat heb ik er mee gedaan?


Time.timescale (4e tutorial uit dit lijstje) wilde in graag in mijn spel verwerken. Hier is een stuk code die laat zien wat het doet.



Wat heb ik er van geleerd?


Player movement

Het meeste in de tutorial kende ik al wel, maar er zaten toch een paar dingen in die simpel lijken maar die je toch snel vergeet. Hij legde bijvoorbeeld uit waarom je Time.Deltatime in een translate gebruikt. Normaal deed ik dat gewoon maar ik snap nu waarom, het is omdat dat de echte tijd is op dit moment, in secondes en niet afhankelijk van de update snelheid van je pc.


Gui friendly

Deze tutorial sla ik over omdat het veranderd is in de nieuwe unity 5 die ik gebruik.


Ray casting

De basis van raycasting was ik al bekend mee, maar opfrissen in nooit slecht. Daarnaast heb ik ook een aantal nieuwe dingen geleerd zoals dat meeste mensen voor een ray: 'Ray ray' typen, terwijl dit de ray orgin is, dus de plek waar de ray vandaan wordt gestuurd. Het is beter om die dus rayorgin te noemen aangezien dat minder verwarring brengt.

Ook een handige manier om code uit te typen wordt uitgelegd in deze tutorial, hij schrijft eerst op wat hij wil programmeren in normale taal en vervangt het daarna met c#. Handig om uit te plannen wat je wil programmeren.


Pausing your game

Door Time.timeScale te gebruiken kan je een spel pauseren of een slow motion effect creeren. Dit heb ik ook geprobeert te intergreren in mijn spel voor de unity les. Je kan dit zien in het kopje: 'Wat heb ik er mee gedaan?'

De timescale past de dingen aan die bewegen. In mijn unity spel gebeurt dit wanneer de bal de grond raakt, de speler is dan af. De ball remt af tot hij helemaal stil staat en dan laad het level opnieuw.


GetComponent

In deze tutorial wordt GetComponent uitgelegd, Wat het doet wist ik al wel maar door deze tutorial kon ik het toch wat beter begrijpen. Ik wist bijvoorbeeld nog niet dat de onderdelen van een gameobject components waren.


Enemy Spawn Manager (part 1 and 2)

De manier hoe de tutorial uitlegd om enemies te spawnen is door Time.time te gebruiken. Dat is de tijd sins het spel is begonnen. Door elke 5 seconden van die tijd een nieuwe enemy te spawnen. Dat is een manier om het te doen.

Het kan ook met coroutines. Wanneer je een coroutine maakt maak je een object met ienumerator dat niet elke frame loopt. Deze kan je gebruiken om een stuk code tijdelijk te stoppen en dan weer door te laten gaan.

In deze manier gebruikt hij een yield waitforseconds om om de 5 seconden iets te spawnen. Coroutines gebruiken niet veel geheugen dus kan veel gebruikt worden.


Universal health system

In deze tutorial legt hij uit hoe je health maakt voor een object en dat dan vanuit een ander script omlaag kan halen.

Hij maakt in een object een aantal variabelen aan; healh en maxhealth. En maakt dan een method die zorgt dat er levens af gaan. Die stuurt hij dan aan.

Het basis concept kende ik al vanuit game maker, nu heb ik het gezien in unity en het is best gemakkelijk.


LayerMask

Een layermask gebruikt een int om flags te maken. Wanneer een flag aangaat wordt dat de huidige layer.

Het wordt vaak gebruikt voor enemies zodat je kan checken of iets geraakt wordt, is dat zo dan check je de layer, is het de goede layer dan moet het object kapot.

Waarom zijn er maar 32 layers? Dat komt omdat het met bits werkt. Er zijn 32 nullen en een-en. Elke nul en een kan aan of uitgezet worden, dat representeerd een laag.

Je kan dan ook controleren met een raycast wat voor layer op een object zit en sommige negeren. In dit geval moet je het bit nummer invullen en niet de naam van de layer.

Daarnaast kan je ook een layermask aanmaken. Hierdoor hoef je niet 'bitshift' te gebruiken.


Monedevelop settings

In deze tutorial legt hij uit hoe je in monodevelop kan aanpassen hoe je code automatisch aanvult. Daarnaast kan je ook goedgeschreven code automatisch een kleur geven wanneer het goed is.


Object pooling

Elke keer wanneer je NEW gebruikt moet de garbage collector het schoon maken. Vaak als je lag hebt komt dat door de garbage collector. Door object pool te gebruiken laat je het systeem schoon.

Je kan bijvoorbeeld bullets maken in het begin van het spel. Dan is het slim om ze als child van de PoolManager te maken (waarin je ze creeert).

Daarna kan je ze actief zetten, wanneer dat gebeurt worden ze actief en doen ze hun ding. Daarna resetten ze weer nog nonactief.

Op die manier hoef je niet steeds te laden en garbage te verwijderen.