Les 07

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

This lesson contains 13 slides, with text slides and 1 video.

time-iconLesson duration is: 120 min

Items in this lesson

Les 07
Master Singleton

Slide 1 - Slide

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 - Slide

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 - Slide

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 - Slide

Singleton dependency zonder Master Singleton
Master Singleton dependency

Slide 5 - Slide

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 - Slide

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 - Slide

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 - Slide

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

Slide 9 - Slide

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



Slide 10 - Slide

Slide 11 - Video

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 - Slide

Slide 13 - Slide