donderdag 26 november 2015

Official Unity 3d C# Tutorial Beginner


Link


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?


Scripts as Behaviour Components

Je kan scripts zien als een gedrag onderdeel van een object. Alle dingen die je op een gameobject zet zijn eigenlijk componenten.

Je kan scripten in javascript en C# en Boo maar Boo wordt niet vaak gebruikt.


Variables and Functions

Het eerst gedeelte van een variable opzetten is een decleration en het geven van een waarde hieraan heet initialization.

Start() gebeurt wanneer een object de scene in komt.

Een void functie geeft niets terug maar een int functie kan dat wel doen. Zo kan je een lastige rekensom in een functie stoppen om het zo georganiseerd te houden.


Conventions and Syntax


een punt tussen twee woorden in code heet dot opperator. Met deze functie kun je in een groep zoeken, bijvoorbeeld de groep Debug en dan Log. Dus Debug.Log is log in de groep Debug.

Door indenting te gebruiken houd je de code overzichtelijk. Dit betekend tabs gebruikem tussen { en }.


C# vs JS syntax


In javascript schrijf je direct in de class inplaats van bij C# waar je dat zelf moet aangeven.

In javascript geef je na de naam aan wat voor file het is inplaats van ervoor zoals bij C#

In javascript start je met function voor een functie en geef je daarna aan wat het voor functie is. In C# doe je dat er voor.


IF Statements


Deze informatie kende ik al en heb hier dus niets van geleerd.


Loops


Looping heet vaak itterating.

Met while kan je net zo lang iets doen totdat het niet meer zo is. Het is ook handig om het te gebruiken om iets maar een keer te doen met een bool.

Met foreach kan je door een array lopen en elke array iets laten doen.


Scope and Access Modifiers


Een scope is waar een code gebruikt wordt. Ze kunnen dus niet buiten hun scope komen.

Een acces modifier is public of private.


Awake and Start


Awake kan het best gebruikt worden voor referenties tussen scripts en initialisatie.

Start kan het best gebruikt worden om iets pas dan te laten gebeuren. Met awake geef je hem bevoorbeeld kogels maar bij start kan hij pas schieten. Start gebeurt ook maar een keer in het spel.


Update and FixedUpdate


Update is wordt een keer per frame gevraagd. Het is dus verschillend elke keer en niet vast.

Met Fixedupdate wordt het op een vast tempo gedaan. Handig voor dingen die gelijkmatig moeten verplaatsen zoals physics.


Vector Maths


De lengte van een vector is de magnitude.

Met je linker hand kan je de Axes onthouden. Je duim is dan X, je wijsvinger Y en je middelvinger Z.

Met dot product, magnitute en cross product kan je twee vectoren combineren.

Enabling and Disabling Components


Met de functie Enabled kun je een component uitzetten, zoals bijvoorbeeld en licht.

Door een vraagten voor een bool te zetten zeg je: zet deze variable naar wat hij nu niet is. Handig voor switches dus.


Activating GameObjects


Met setactive zet je een object aan of uit in de scene. Je kan een child van een object nonactief maken door de parent van het object nonactief te maken. Door de parent dan weer terug te veranderen maak je de child niet direct actief.


Translate and Rotate


door een time.deltatime toe te voegen aan een translate of rotate gaat het evensnel als de tijd inplaats van even snel als de frames.

Vector3.up en alle zoals deze gebruiken local transform en draaien dus mee met het object.


Look At


Er wordt uitgelegd hoe je een object kan volgen maar dat wist ik al.


Linear Interpolation


Lerp wordt gebruikt om de waarde tussen twee waardes te krijgen en kan dus gebruikt worden voor smooth moving maar ook om te kijken wat de tussenwaarde is.

Destroy

Met destroy kan je objecten verwijderen uit het spel maar ook alleen een component van een object af halen zoals bijvoorbeeld een licht o.i.d.


GetButton and GetKey

Get getbutton kan je de input manager gebruiken en met getkey specefieke keys zoals space. Dit kan je gebruiken als je wilt dat mensen hun keys niet mogen aanpassen.


GetAxis


Het veschil tussen getaxis en getbutton is dat getbutton een bool terug geeft maar met een axis krijg je meer.

Het is een float.

Met Gravity zeg je hoe snel het getal weer terug naar nul moet gaan vanuit -1 of 1.

Met deadzone kan je een minimaal punt stellen waar de joystick overheen moet om te zorgen dat de joystick niet te gevoelig wordt.


OnMouseDown

Met onmousedown kan je kijken of er op een object geklikt is.


GetComponent

In deze tutorial ging het over getcomponent, hier snapte ik alles al van. Wat wel handig was om te weten is dat get component erg zwaar is om te gebruiken dus gebruik het niet vaak.


Delta Time


Time.DeltaTime is de tijd tussen twee frames, het kan dus gebruikt worden om bewegingen te laten 'smoothen'.


Data Types

Value types zijn variabelen die echt iets bevatten, references kijken ergens naar en gebruikt dat.

Values zijn: Int, float, double, bool, char en structs. Refereces zijn: Classes zoals tranform en gameojects.

Classes


Een script moet de zelfde naam hebben als de class er in.

Classes moeten eigenlijk maar een taak hebben.

Gebruik meer losse scripts om overzicht te houden.


Instantiate


Met instantiate kan je een prefab in de scene clonen. Handig voor schieten o.i.d.

Je kan ook iets inladen als een soort. Bijvoorbleed:    As rigidbody.


Arrays


je kan een array ook aanmaken door de waardes er in de initialisation in te gooien. De hoeveelheid waardes die je er daar in gooit bepaald dan hoe lang de array is.


Invoke

Hiermee kan je iets uitvoeren na een bepaalde tijd.

Invoke("IETS",2); zegt het zelfde als IETS(): maar dan met een timer.


Enumerations


Enums hebben maar een bepaalde aantal waardes. Het is dus een variable die bijvoorbeeld maar 4 waardes heeft zoals noord, oost, zuid en west. Deze kan je dan later weer opvragen.


Switch Statements


Met switch kan je eigenlijk een variable bekijken en dingen laten doen wanneer die variable die waarde heeft.

Het zijn eigenlijk een boel if statements maar dan netjes georganiseerd.