C# – Ciekawa architektura UI

category

c#

author

admin

tags

UI ,Unity

Interesująca prezentację o tym jak zrobić fajne UI https://youtu.be/wbmjturGbAQ
Zakładamy, że każde okienko będzie miało tylko jedną instancję.

Lepiej mieć wiele prefabów okienek, niż jeden prefab całego UI. Wtedy trudniej o konflikty jeśli każdy edytuje własne okienko.

Lepiej tworzyć okienka na bieżąco kiedy są potrzebne zamiast tworzyć cału UI przy starcie apki. Nawet disabled zajmuje jakąś tam pamięć. Lepiej je tworzyć na bieżaco. Owszem Instantiate też ma jakiś narzut, ale okienka tworzy się rzadko a nie 100 razy na frame.

Jeśli jakiś element UI jest całkowicie zakryte innym elementem, to i tak jest rysowany. Warto o tym pamiętać i zrobić go disabled. Nawet jeśli renderer zrobimy jako disabled, to np. Update() dalej się wykonuje, a tego nie chcemy.

No to jedziemy z UI:
Dla każdego okienka jest prefab i każdy prefab ma swoją klasę. Każda z tych klas jest singletonem.
Będziemy również potrzebowali MenuManagera który będzie tworzył instancje naszych menu. Ten MenuManager również jest singletonem.
Używamy Stack<Menu> do trzymania kolejnych okienek (Bosh… Czemu ja dotąd używałem List do tego?<wstyd>). Zamykane okienko usuwa je. Dodanie okienka chowa(nie usuwa) okienko aktualnie na topie i dodaje nowe.

Ogólnie przykład nie jest trywialny. Bardzo ciekawe zastosowanie Generics gdzie parametrem T jest ta sama klasa. Ciekawe, ciekawe

Leave a comment