Kalendarz zadań koordynuje zadania wykonane w każdym klatku, gdy gra jest uruchomiona, nawet gdy gra jest wstrzymana. Te zadania obejmują wykrywanie wejścia gracza, animowanie postaci, aktualizowanie symulacji fizycznej i wznowienie skryptów w stanie wait().
Podczas gdy może być wiele zadań do zrobienia, kalendarz zadań może potencjalnie być przeciążony, szczególnie w następujących sytuacjach:
- Używanie własnej konfiguracji postaci lub schematu wejścia.
- Animujesz części sam (zamiast używać Animator ).
- W zależności od precyzyjnej fizyki.
- Replikowanie obiektów regularnie.
Ramy
Rama to jednostka logiki gry, w której dzieje się praca. Każda ramka powinna wykonuje zadania wydajnie, prowadząc do więcej ram na sekundę i do smoother doświadczenia gracza.
Bieżący serwis
Najbardziej bezpośredni sposób dodania zadań w grze point-by-point jest poprzez następujące członki RunService :
Priorytet kalendarza
Kalendarz zadań kategoryzuje i ukończa zadania w następującej kolejności. Niektóre zadania mogą nie wykonywać pracy w ramach, a inne mogą wykonywać wiele razy.
Najlepsze praktyki
Aby zbudować wydajne gry z myślą o wydajności, zauważ obserwuje:
Nie łącz/zwiąż funkcje renderowania z krokiem renderowania, chyba że jest to absolutnie konieczne. Tylko zadania, które muszą być wykonane po wejściu, ale przed renderowaniem, powinny być wykonane w ten sposób, jak ruch kamery. Dla rygorystycznej kontroli nad porządkiem użyj Class.RunService:BindToRenderStep()|BindToRenderStep()
Minimize the amount of waiting scripts. Unikaj używania while wait() do end lub while true do
Zmiany transformacji silnika6D powinny być wykonane na węzle PreSimulation. Jeśli nie, Animators będzie ponadpisywał zmiany na następnym klatce. Nawet bez Class.Motor6D.Transform zostanie wdrożony do pozycji