Untity, on collision stay i update

0

Mój skrypt działa w ten sposób że w on collision enter jeśli jest kolizja z danym obiektem to daje wartość bool na true, gdy za to kolizji z tym danym obiektem nie ma to daje wartość false, i potem całą akcja się dzieje w funkcji update po tym jak Bool jest true. Mam pytanie, bo myślę żeby ten skrypt przenieśc do funkcji on collision stay, nic poza wykryciem kolizji z danym obiektem nie jest mi potrzebne z specjalnej funkcji collision. Więc lepiej je przenieść do on collision stay czy zostawić żeby działało w stylu: on collision enter, on collision exit, update? Chodzi mi o to które jest bardziej prawidłowe i wydajniejsze?

2
Adewo napisał(a):

Mój skrypt działa w ten sposób że w on collision enter jeśli jest kolizja z danym obiektem to daje wartość bool na true, gdy za to kolizji z tym danym obiektem nie ma to daje wartość false, i potem całą akcja się dzieje w funkcji update po tym jak Bool jest true.

Jeśli zmieniasz wartość pola enabled skryptu zawierającego Update() to jest ok.
Wtedy Update() nie wykonuje się niepotrzebnie.

Mam pytanie, bo myślę żeby ten skrypt przenieśc do funkcji on collision stay, nic poza wykryciem kolizji z danym obiektem nie jest mi potrzebne z specjalnej funkcji collision. Więc lepiej je przenieść do on collision stay czy zostawić żeby działało w stylu: on collision enter, on collision exit, update? Chodzi mi o to które jest bardziej prawidłowe i wydajniejsze?

Nie miałem takich dylematów, więc nie drążyłem tematu.
Mogę gdybać, że implementacja jest taka, że OnCollisionStay() kosztuje tyle samo, co OnCollisionEnter() i OnCollisionExit(), bo jak odpalił się ENTER i nie było EXIT, to Unity "się domyśla", że cały czas jest STAY. Jeśli to zredukuje u Ciebie ilość skryptów, to warto przerobić na STAY, bez Update().

Jeśli chcesz się dowiedzieć, co będzie na 100% lepsze, to zrób własne testy, użyj profilera itd.

Jest jeszcze taka opcja, żeby w ENTER odpalać StartCoroutine(), a w EXIT ją zatrzymywać.
Ale skoro już przesadzamy z optymalizacją, to odpada, bo Coroutine ma chyba ciut większy narzut niż pozostałe opcje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1