Les 07

Les 07
Master Singleton
1 / 13
suivant
Slide 1: Diapositive
Programming - FundamentalsMBOStudiejaar 2

Cette leçon contient 13 diapositives, avec diapositives de texte et 1 vidéo.

time-iconLa durée de la leçon est: 120 min

Éléments de cette leçon

Les 07
Master Singleton

Slide 1 - Diapositive

Nadelen Singleton
Singletons zijn erg handig en ook makkelijk te gebruiken maar er zitten wel ook nadelen aan. Scripts worden er snel afhankelijk van omdat het zo makkelijk te koppelen is en vaak spreken scripts dan ook meerdere verschillende singletons aan. Een Enemy script kan bijvoorbeeld de PlayerManager, GameManager en AudioManager alle drie tegelijk aanspreken en daar afhankelijk van worden.

Slide 2 - Diapositive

Nadelen Singleton
Dit gaat tegen een hele boel design principles in, verder is een singleton ook altijd open en dat gaat ook weer tegen een design principle in.

Slide 3 - Diapositive

Master Singleton
Om een van deze problemen op te lossen, namelijk dat een script bij heel veel verschillende singletons informatie aanroept, kunnen we oplossen met een Master Singleton.
Hierdoor worden nieuwe scripts nogmaar van een singleton afhankelijk en kan je alles via die instantie vinden.

Slide 4 - Diapositive

Singleton dependency zonder Master Singleton
Master Singleton dependency

Slide 5 - Diapositive

Master Singleton
Een Master Singleton is makkelijk te maken, we moeten alleen wel een paar dingen aanpassen. Alle aparte singletons die we eerst hadden gemaakt zijn nu niet meer nodig. We hebben alleen een referentie nodig naar de scripts.
In Unity doen we dit met GetComponentInChildren.

Slide 6 - Diapositive

Master Singleton
We hebben dus in onze scene een leeg GameObject waar we onze Master Singleton op plaatsen. Op dit object wil je vervolgens child objects toevoegen voor iedere "Singleton" die we willen gebruiken.

Slide 7 - Diapositive

Master Singleton
In code ziet het er ook wel een beetje anders uit. We willen nu namelijk alle informatie uit onze child managers halen, dit doen we met GetComponentInChildren. Dit zoekt door onze child objecten in unity heen en pakt het script wat we zoeken, in ons geval de aangegeven manager.

Slide 8 - Diapositive

Hiermee kunnen we al onze managers inlezen via MasterSingleton.Instance.ManagerName

Slide 9 - Diapositive

Master Singleton
Als we dan nu een functie uit bijvoorbeeld de GameManager willen gebruiken spreken we die als volgt aan;



Slide 10 - Diapositive

Slide 11 - Vidéo

Opdracht
Pak de opdracht van de vorige les en bouw het om tot een Master Singleton. Voeg hier ook een nieuw element bij namelijk de UI Manager. Deze zorgt er voor dat de spelers health te zien is in een User Interface.

Je kan deze indezelfde repository uploaden als de vorige, maak dan wel een nieuwe branch aan genaamd "Master-Singleton".

Slide 12 - Diapositive

Slide 13 - Diapositive