Programador de tareas

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

El planificador de tareas coordina las tareas completadas en cada marco a medida que el juego se ejecuta, incluso cuando el juego está en pausa. Estas tareas incluyen la detección de la entrada del jugador, la animación de los personajes, la actualización de la simulación de física y la reanudación de los scripts en un estado de wait() .

Aunque puede haber múltiples tareas en ejecución, el programador de tareas puede potencialmente estar sobrecargado, especialmente en las siguientes situaciones:

  • Usando un personaje personalizado o un esquema de entrada.
  • Animando partes por ti mismo (en lugar de usar un Animator )).
  • Depende mucho de la física precisa.
  • Replicando objetos con regularidad.

Marcos

Un marco es una unidad de la lógica del juego donde se realiza el trabajo . Cada marco debe realizar tareas de manera eficiente, lo que conduce a más marcos por segundo y una experiencia de jugador más suave.

Ejecutar servicio

La forma más directa de agregar tareas de juego de marco a marco es a través de los siguientes miembros de RunService :

Prioridad del cronometrador

El programador de tareas categoriza y completa tareas en el siguiente orden. Algunas tareas pueden no realizar trabajo en un marco, mientras que otras pueden ejecutarse varias veces.

Mejores Prácticas

Para construir juegos efectivos con eficiencia en mente, tenga en cuenta lo siguiendo:

  • No conecte/vincule funciones a la etapa de renderizado a menos que sea absolutamente necesario. Solo las tareas que deben hacerse después de la entrada pero antes de renderizar se deben hacer de esta manera, como el movimiento de la cámara. Para un control estricto sobre el orden, use Class.RunService:BindToRenderStep()|BindToRenderStep() en lugar de Class.RunService.PreRender|PreRender .

  • Minimice la cantidad de scripts de espera. Evite usar while wait() do end o while true do wait() finalizar

  • Las transformaciones de Motor6D deben realizarse en el evento PreSimulation. Si no, Animators anulará los cambios en el próximo marco. Incluso sin un Animator, 0> Class.RunService.PreSimulation|PreSimulation0> es el último evento