Link
https://unity3d.com/learn/tutorials/modules/intermediate/scripting/properties?playlist=17117
Waarom deze tutorial?
Deze tutorials gaan over C# in unity en zijn ook gemaakt door de makers van unity. Ze zullen me vast veel inzicht geven in hoe het werkt. Ook al ken ik veel van de beginners code al, is het toch handig om het nog een keer te horen van een andere tutorial en het wordt hier erg goed uitgelegd.
Wat heb ik er van geleerd?
Properties
Met properties krijg je meer controle over je variables. Je kan hem dur read only of write only maken.
Daarnaast kan je in properties meer code stoppen. Dus extra code in een variable.
Ternary Operator
Dit is een kleinere if or else statement. Hiermee kan je bijvoorbeeld in een lijn code vragen of een bool false of true is en daar een antwoord op geven, allemaal in een regel.
Statics
Een static variable is een variable die alleen tot de classe hoort waar hij gemaakt is. Het veranderd alleen hier en niet ergens anders. Handig om variables te vragen van andere scripts.
Door statics te gebruiken hoef je een classe niet te instantiaten.
Method Overloading
Door overloading te gebruiken kan je een method maken, maar die op twee manieren gebruiken.
Je kan dan iets naar de method sturen, De method gaat dan kijken welke waardes je hebt meegegeven en voert de method uit die het beste lijkt op de info die je hebt meegegeven.
Generics
Dit is een method die eigenlijk vrij losjes werkt. Je kan op deze manier een type meesturen met de method, dan krijgt de method de type mee. Je kan ook bepaalde types uitsluiten.
Inheritance
Met inheritance kan je in een child van een parant de zelfde functies gebruiken als de parent. Private dingen kan je niet accessen in de child..
Met base class krijg je de informatie uit de base class, dus het eerste object uit dehieracy.
Polymorphism
Door bijvoorbeeld een script te maken die verteld hoe een character beweegd kan je daarnaa losse scripts maken die inheritten van de beweeg class en daar losse characters van maken zoals vijanden
Een child class is een parent class maar een parent class is geen child class.
Member Hiding
Om een variable te verstoppen van de parent class gebruik je New (variable). Anders pakt hij de variable van de parant.
Dit is handig om iets in een child aan te maken zonder dat alles meekomt van de parent.
Overriding
Met overiding kan je in een class van een class van een parent zeggen dat je een method in de base class wil aanspreken maar wel iets wil aanpassen en dus 'overriding'.
Zo kan je bijvoorbeeld zeggen dat elke enemy een animatie en geluid moet afspelen bij 'Yell( )'
Dan krijgen alle clilds van dat object dezelfde functie, dan kan je zeggen ik wil die funcie doen maar met dit erbij. Dus overriding.
Interfaces
Door iets in de interface te stoppen moet alles wat je er in zet aan een soort controct voldoen.
Class B van class A kan inheritten maar met interfaces kan Class B Interface A implementeren
Interfaces start je met een I zoals Ikillable
Extension Methods
Door een losse class te maken met extension methods kan je methods maken zoals de tranform, die je niet kan aanpassen maar alleen kan oproepen.
De code komt dan ook te staan achter hetgene waar je een extension method voor maakt, bijvoorbeeld: transform.ResetTransForm();
Het stukje code zit dus nu een soort van in de transform.
Namespaces
Namespaces zijn de stukjes code aan het begin van het document. Deze bevatten stukjes code die je kan gebruiken in je script. Deze kan je ook zelf maken.
Lists and Dictionaries
Een list is een dynamishe array. Deze kan je dus tijdens het spel aanpassen. Handig voor inventories.
Dictornaries zijn een soort van lists, deze kan je dan aanvragen met keys.
Coroutines
Dit is een functie uitgevoerd in gedeeltes. Je kan iets iets laten doen totdat iets gedaan is. Bijvoorbeeld; naar een target laten lopen elke seconde.
Quaternions
Een transform rotation is opgeslagen als quaternions. Hierdoor heb je geen gimblelock. Dat is dat het object niet goed draait om local axis.
Lerp: Liniear inerpolatie over tijd. Dus 0 tot 1 gaat even snel.
Slerp: Spherical interpolatie over tijd. Dus 0 tot 1 gaan steeds sneller tot 0.5 en dan weer langzaam.
Delegates
Dit is een container voor functies die dan gebruikt kunnen worden.
Je kan dan vanuit andere scripts de functies opvragen. Dan kan je alles hierin uitvoeren of maar een paar dingen.
Attributes
Met attributes kan je bijvoorbeeld een range geven aan een variable. Zo kan je bijvoorbeeld een maximale snelheid geven aan een auto. In de inspector krijg je dan ook een balkje inplaats van een invul vlak om de variable aan te passen.
Met executeineditmode voer je de code uit in de editor zonder de scene te laten lopen.
Events
Met events kun je bijhouden wanneer iets gebeurt, dus bijvoorbeeld je drukt op een knop. Zo houd je ook alles netjes bij elkaar en zorg je ervoor dat je alles vanuit een event kan managen.