Tuesday, April 11, 2017

Optimalisatie - deel 2

Bij velden groter dan 100x100 tegels duurde het erg lang om de applicatie te laden, en bij velden groter dan 250x250 tegels liep de applicatie vast. Dus om uit te zoeken waar dit aan lag ben ik gaan kijken hoe ik mijn for-loop kan optimaliseren.

Omdat bij het starten van de applicatie alles vastliep totdat het gehele veld was geinitialiseerd, ben ik gaan kijken of ik de tegels niet stukje voor stukje kon initialiseren, zodat de computer niet meteen vol op zijn donder krijgt.

Hiervoor ben ik gaan uitzoeken wat de volgorde van het uitvoeren van een script was, want ik wil dat eerst de absolute basis van de applicatie gestart is, voordat alle tegels worden toegevoegd. Ook moeten de tegels niet 100% van alle processorkracht opvreten, zodat de computer niet vastloopt of hangt.

Op de site van Unity stond gelukkig duidelijk uitgelegd wat de volgorde van een script in Unity is.

De functies die voor mij interessant zijn:

  1. Start() - In deze functie creeer ik alle tegels. Wordt 1x per script aangeroepen, als de applicatie wordt opgestart.
  2. Update() - Wordt ieder frame aangeroepen
  3. Coroutine() - Wordt ieder frame na de Update aangeroepen. Jij geeft aan wanneer dit start of stopt.

Ik besloot om de for-loop om tegels te creeren in een coroutine te zetten, zodat de applicatie eerst helemaal kan opstarten, en het visueel zichtbaar is hoe het veld van tegels wordt opgebouwd.

Hierdoor liep de computer niet meer vast bij grote aantallen tegels, maar de performance werdt niet beter. Daarom ben ik gaan uitzoeken waar de bottleneck nu zat, dit is te zien in het onderstaande filmpje:



Nu moet ik gaan uitzoeken hoe ik dit probleem ga overbruggen...


No comments:

Post a Comment