Harmonogram zadań koordynuje zadania wykonywane w każdej klatce, gdy gra jest uruchomiona, nawet gdy jest wstrzymana. Zadania te obejmują wykrywanie wejścia gracza, animowanie postaci, aktualizowanie symulacji fizyki i wznawianie skryptów w stanie task.wait().
Choć może być uruchomionych wiele zadań, harmonogram zadań może być przeciążony, szczególnie w następujących sytuacjach:
- Użycie niestandardowej riggi postaci lub schematu wejścia.
- Samodzielne animowanie części (zamiast korzystać z Animator).
- Silne zależności od precyzyjnej fizyki.
- Regularne replikowanie obiektów.
RunService
Najbardziej bezpośredni sposób dodawania zadań klatka po klatce to korzystanie z następujących członów RunService:
Priorytet harmonogramu
Harmonogram zadań kategoryzuje i wykonuje zadania w następującej kolejności. Niektóre zadania mogą nie wykonywać pracy w danej klatce, podczas gdy inne mogą być uruchamiane wielokrotnie.
* Wykonanie skryptu podczas RunService.Heartbeat różni się w zależności od ustawienia Workspace.SignalBehavior w twojej grze. Zobacz Zdarzenia odroczone.
Najlepsze praktyki
Aby tworzyć wydajne gry z myślą o efektywności, zwróć uwagę na następujące kwestie:
Nie łączaj/wiąż funkcji z krokiem renderowania, chyba że jest to absolutnie konieczne. Tylko zadania, które muszą być wykonane po wejściu, ale przed renderowaniem, powinny być realizowane w ten sposób, jak ruch kamery. Aby uzyskać ścisłą kontrolę nad kolejnością, użyj BindToRenderStep() zamiast PreRender.
Zarządzaj stanami fizycznymi ostrożnie. PreSimulation odbywa się przed fizyką, podczas gdy PostSimulation odbywa się po fizyce. Dlatego logika rozgrywki, która wpływa na stan fizyki, powinna być realizowana w PreSimulation, na przykład ustawiając Velocity części. Z drugiej strony, logika rozgrywki, która polega na stanie fizyki lub reaguje na niego, powinna być obsługiwana w PostSimulation, na przykład odczytując Position części, aby wykryć, kiedy wchodzą do zdefiniowanych stref.
Zmiany transformacji Motor6D powinny być realizowane podczas zdarzenia PreSimulation. Jeśli tego nie zrobisz, Animators nadpiszą zmiany w następnej klatce. Nawet bez Animator, PreSimulation jest ostatnim zdarzeniem Luau, które jest wywoływane przed zastosowaniem Motor6D.Transform do pozycji części.