Les 08

Les 08
Object Pooling
1 / 18
next
Slide 1: Slide
Programming - FundamentalsMBOStudiejaar 2

This lesson contains 18 slides, with text slides.

time-iconLesson duration is: 120 min

Items in this lesson

Les 08
Object Pooling

Slide 1 - Slide

Object Pooling
Object pooling wordt voornamelijk gebruikt om performance te verbeteren. Het wordt vaak gebruikt wanneer je een object vaak instantieert en verwijderd, dit kost namelijk veel computer kracht om te doen.

Slide 2 - Slide

Object Pooling
Object Pooling gaat dit tegen door van te voren een pool te maken van het object dat je vaak moet instantiëren. Je kan dat het nodige object uit de pool halen wanneer je het nodig hebt en terug stoppen als je er klaar mee bent. Hierdoor is het maar 1 keer zwaar voor je computer tijdens het laden van je game.

Slide 3 - Slide

Object Pooling
Een goed voorbeeld om object pooling bij te gebruiken is voor kogels. Normaal gesproken als je een kogel, of een ander projectiel, af wilt schieten zou je die eerst instantieren en aan het einde weer verwijderen. Nu haal je je kogel uit de pool van bestaande kogels en stop je hem aan het eind daar ook weer in.

Slide 4 - Slide

Hier worden de lazers live geinstantieerd
Hier zijn ze van te voren al ingeladen en inactief gemaakt

Slide 5 - Slide

Object Pooling - Queue
Wanneer je een object pool wilt gaan maken zijn Queue's erg handig. Een queue lijkt erg veel op een lijst maar werkt iets anders. Bij een queue kan je alleen het eerste item er uit halen en als je iets nieuws er in wilt stoppen komt het automatisch aan het einde te staan. Dit noemen we "First in First out".

Slide 6 - Slide

First in First out principe

Slide 7 - Slide

Object Pooling - Queue
Je kan dingen aan een queue toevoegen door Enqueue te gebruiken. Om iets er uit te halen gebruik je Dequeue.
Met Peek kan je zien wat het volgende item is.

Simpelweg is het dus een soort rij voor de kassa. Je sluit je achteraan aan en de eerste persoon in de rij wordt als eerste geholpen.

Slide 8 - Slide

Queue
Het maken van een queue lijkt ook veel op dat van een lijst.
Hier stoppen we 5 random getallen in een nieuwe queue.

Slide 9 - Slide

Queue
Hier gebruiken we Peek om het volgende nummer te zien, Dequeue om dit nummer in een variable op te kunnen slaan en Enqueue om een nieuw random nummer toe te voegen.

Slide 10 - Slide

Object Pooling - Queue
We gaan nu een Object Pool maken met behulp van een Queue. Om te beginnen gaan we een paar variables nodig hebben.
Ik heb van het ObjectPool script ook een singleton gebruikt. Zo kunnen we altijd iets uit de pool pakken.

Slide 11 - Slide

Object Pooling - Queue
In de start functie willen we de queue afmaken en vullen met items. Dit doen we met een for loop die blijft lopen todat poolAmount is berijkt.

Slide 12 - Slide

Object Pooling - Queue

Om ons Object Pool script af te maken hebben we nog 2 functies nodig. Eentje om items uit de queue te halen (hier te zien) en eentje om items weer toe te voegen.

Slide 13 - Slide

Object Pooling - Queue

Met deze functie kan je weer items toevoegen aan de Queue. Deze functie zet ze ook gelijk weer op inactief.

Slide 14 - Slide

Object Pooling - Queue
Om dan vanuit een ander script iets uit de pool te halen hoeven we alleen maar de functie aan te roepen van het object pool script.

Ik geef het ook een random positie mee om neer te zetten, voor kogels zou je het dan waarschijnlijk gelijk zetten aan de positie van het pistool of anders de speler.

Slide 15 - Slide

Object Pooling - Queue
Ook zet ik hier het object weer op actief. Hierdoor is die weer zichtbaar voor de speler en "bestaat" die echt weer.

Slide 16 - Slide

Object Pooling - Queue
Als laatste moeten we nog de functie aanroepen om een object weer terug in de queue te stoppen. Meestal doe je dit op het script van het gepoolde object zelf. Dan kan die heel makkelijk zichzelf weer terug in de pool stoppen.

Slide 17 - Slide

Opdracht
Open weer het singleton project van vorige weken. Voeg hier nu een object pool aan toe voor de auto's. Zorg er ook voor dat wanneer je een auto uit de pool haalt deze weer op de goeie plek komt te staan en dat in plaats van verwijderd worden de auto terug in de pool gaat!

Slide 18 - Slide