Najlepsze rozwiązania dotyczące wydajności tworzenia skryptów wizualnych w usłudze Mesh
Omówienie
Skrypty wizualne nie są z natury powolne, ale są znacznie wolniejsze niż, powiedzmy, kod języka C#.
Podczas tworzenia skryptów wizualnych w środowisku najlepiej używać ich do łączenia istniejących funkcji, a nie do podnoszenia dużych obciążeń: kleju, a nie girders. Najprostszym sposobem zapewnienia, że skrypty wizualne nie wpływają na ogólną wydajność środowiska, jest upewnienie się, że w ogóle nie robią zbyt wiele.
Zdarzenia skryptów o wysokiej i niskiej częstotliwości
Tworzenie skryptów wizualnych oferuje szeroki wybór zdarzeń, których można użyć do wyzwalania przepływów skryptów wizualnych.
Spróbuj uniknąć:
W przypadku aktualizacji, przy stałej aktualizacji, w późnej aktualizacji i podobnych. Te zdarzenia są wyzwalane bardzo często (często z taką samą szybkością jak ramki renderowania), a nawet jeśli skrypt nie robi zbyt wiele, nawet po prostu uruchomienie go ma obciążenie, które może zauważalnie wpłynąć na wydajność środowiska, jeśli wystąpi w wielu miejscach jednocześnie.
Po zatrzymanie wyzwalacza i zatrzymanie kolizji. Mimo że te zdarzenia są aktywne tylko w pewnych warunkach (na przykład gdy obiekt fizyki znajduje się wewnątrz objętości wyzwalacza fizyki lub dotykania zderzacza), podczas gdy te warunki są podane, będą one wyzwalane bardzo często.
Nie ma bezpośredniego preferowanego zastąpienia tych zdarzeń o wysokiej częstotliwości. Nie są one wyłączone, więc można ich używać, jeśli jest to absolutnie konieczne, ale zalecamy wypróbowanie korzystania z wbudowanych funkcji, takich jak składnik Animator, który może być kontrolowany przez skrypty wizualne lub zmienić strukturę logiki skryptu, aby być reaktywny, a nie aktywny — na przykład za pomocą zdarzeń Zmiany stanu.
Jeśli nie możesz uniknąć tych zdarzeń o wysokiej częstotliwości, możesz zmniejszyć ich wpływ, utrzymując nieaktywny cały składnik skryptu maszyny skryptów, gdy nie jest potrzebny. Inny skrypt wizualny może używać włączonego zestawu maszyn | skryptów, aby wyłączyć i włączyć cały graf skryptu. Mimo że jest wyłączony, żaden z jego węzłów zdarzeń nie jest wyzwalany i ma zerowy koszt środowiska uruchomieniowego.
Są one nieco niebezpieczne dla wydajności, ale czasami konieczne:
- Po wejściu w kolizję i wyjściu z kolizji. Zwykle te zdarzenia są wyzwalane tylko raz, gdy ciało fizyki dotyka zderzacza, a po raz kolejny, gdy przestaje dotykać. Jednak czasami ciało fizyki utknęło między dwoma zderzaczami; w takim przypadku może zacząć trząsać się szybko tam iz powrotem, wyzwalając wiele zdarzeń w sprawie kolizji w bardzo krótkim odstępie czasu. Zalecamy zamiast tego użycie zdarzeń wyzwól .
Są one w porządku do użycia w niektórych sytuacjach:
Ustawienie Interwał umożliwia wyzwalanie przepływów skryptów w dostosowywalnych interwałach (na przykład raz na sekundę) zdefiniowanych za pomocą ustawienia Interwał . Możesz użyć ustawienia Opóźnienie , aby rozsyłać wykonywanie różnych zdarzeń w interwałach, które mają ten sam interwał .
Węzeł czasomierza nie jest zdarzeniem, ale wyzwoli port znacznika raz dla czasu trwania czasomierza po jego uruchomieniu, wprowadzając port początkowy . Gdy czasomierz nie jest uruchomiony, ma zerowy koszt środowiska uruchomieniowego.
Spróbuj nie używać tych zdarzeń, aby sprawdzić, czy niektóre zmienne, właściwości lub warunki uległy zmianie — lepiej użyć zdarzenia On State Changed w celu nasłuchiwania zmian przy zerowym koszcie bezczynności.
Są one zawsze w porządku do użycia:
Na stan Zmieniono wyzwala tylko wtedy, gdy dowolny z jego portów wejściowych zmieni ich wartość. W przypadku zmiennych skryptu i właściwości składników jest to implementowane bardzo wydajnie w sposób, który nie generuje zerowego kosztu środowiska uruchomieniowego, o ile nic się nie zmienia.
W przypadku zmiany stanu można również użyć do obserwowania bardziej złożonych danych wejściowych (na przykład wyników obliczeń), które wymagają ponownej oceny danych wejściowych raz na ramkę w celu określenia, czy uległa zmianie. Musisz włączyć opcję Zezwalaj na sondowanie, aby włączyć tę funkcję. Interfejs użytkownika do edycji skryptu poinformuje Cię o tym i wyświetli ostrzeżenie o potencjalnym wpływie na wydajność. Mimo to nadal będzie to nieco bardziej wydajne niż tworzenie skryptów własnej logiki sondowania przy użyciu zdarzenia On Update .
Po dodaniu elementu słownika i usunięciu elementu słownika działają w podobny sposób i mają zerowy koszt środowiska uruchomieniowego, o ile nic się nie zmienia.
Po wprowadzeniu wyzwalacza i wyjdź z wyzwalacza nie ma żadnych potencjalnych zagrożeń związanych z wydajnością odpowiadających im zdarzeń w przypadku kolizji (patrz powyżej).