O agendador de tarefas coordena as tarefas executadas em cada quadro enquanto o jogo roda, mesmo quando está pausado. Essas tarefas incluem detectar a entrada do jogador, animar personagens, atualizar a simulação física e retomar scripts em um estado de task.wait().
Embora possa haver várias tarefas em execução, o agendador de tarefas pode potencialmente ficar sobrecarregado, especialmente nas seguintes situações:
- Usar uma rig de personagem ou esquema de entrada personalizado.
- Animar partes você mesmo (em vez de usar um Animator).
- Depender fortemente de física precisa.
- Replicar objetos regularmente.
RunService
A maneira mais direta de adicionar tarefas quadro a quadro é através dos seguintes membros de RunService:
Prioridade do agendador
O agendador de tarefas categoriza e completa as tarefas na seguinte ordem. Algumas tarefas podem não realizar trabalho em um quadro, enquanto outras podem ser executadas várias vezes.
* A execução de scripts durante RunService.Heartbeat difere dependendo da configuração de Workspace.SignalBehavior do seu jogo. Veja Eventos diferidos.
Melhores práticas
Para construir jogos eficientes com desempenho em mente, observe o seguinte:
Não conecte/associe funções ao passo de renderização, a menos que seja absolutamente necessário. Apenas tarefas que devem ser feitas após a entrada, mas antes da renderização, devem ser realizadas dessa forma, como movimento da câmera. Para controle estrito sobre a ordem, use BindToRenderStep() em vez de PreRender.
Gerencie estados físicos com cuidado. PreSimulation acontece antes da física, enquanto PostSimulation acontece depois da física. Portanto, a lógica de gameplay que afeta o estado físico deve ser feita em PreSimulation, como definir a Velocity das partes. Em contraste, a lógica de gameplay que depende ou reage ao estado físico deve ser tratada em PostSimulation, como ler a Position das partes para detectar quando elas entram em zonas definidas.
Mudanças de transformação do Motor6D devem ser feitas no evento PreSimulation. Se você não fizer isso, Animators sobrescreverão as mudanças no próximo quadro. Mesmo sem um Animator, PreSimulation é o último evento Luau disparado antes que Motor6D.Transform seja aplicado às posições das partes.