Wpis z mikrobloga

Zapytam na wypoku, może ktoś tu coś dłubał w Unity. Mam skrypt broni, która po trafieniu powinna wyświetlić znacznik w HUD. HUD jest osobno, sama broń także osobno ma same kule.

Problem jest taki, że chcąc dostać się do HUD muszę go jakoś odnaleźć w scenie lub przypisać do kuli. Kule są tworzone dynamicznie, wiec nie mogę przypisać huda przed jej stworzeniem, muszę to robić dynamicznie. To jest kiepskie pod względem optymalizacji.

Pytanie więc jak to powinienem zrobić? Czy eventy to będzie dobre podejście? Nie wiem jeszcze jak działa ten eventmanager w unity, ale sobie wyobrażam. Potrzebuję uruchomić event podczas trafienia wroga i nasłuchiwać go w HUD. Czy to dobre podejście? Macie może jakieś propozycje?

#unity #gamedev #pytanie
  • 4
@spike200: Singletony i managery. Robisz manager na interfejs np. ViewManager albo HUDManager albo InterfaceManager, cokolwiek.

I potem wywołujesz z dowolnego miejsca w projekcie:
InterfaceManager.instance.DisplayWeaponMarker(WeaponMarker.Circle);
czy coś takiego
Poczytaj sobie o zmiennych statycznych w Unity. Tu tutorial: link

Jeżeli obiekt występuje tylko raz, tak jak Twój HUD, to utwórz zmienną statyczną odnoszącą się do tego HUD-a, dzięki temu będziesz miał do niej globalny dostęp.

1. Utwórz swój obiekt HUD, dodaj do niego nowy skrypt np. HUDManager
2. W skrypcie wewnątrz klasy dodaj linijkę: public static GameObject HUD;
3. W funkcji Start dopisz: HUD = gameObject;

Od teraz w każdym skrypcie