El código de programación es útil en muchas situaciones, como asegurar que el código se ejecute después de que una acción o ciclo específico se haya completado o retrasar el código durante un período de tiempo específico.Puedes usar la biblioteca task para optimizar el programador de tareas de Roblox para administrar y programar código.También puedes usar una biblioteca similar llamada coroutine para programar código que tenga alguna funcionalidad adicional.
Métodos comunes
Los siguientes son los métodos más comunes task usados para programar código.Debe utilizar los métodos de tarea sobre los métodos de programación legados, como wait(), para garantizar que su código se ejecute de manera óptima.
La siguiente tabla lista los métodos globales legados relevantes y sus contrapartes preferidas y más optimizadas:
| Métodos globales legados | Métodos de tarea | Alternativas adicionales | | :-------------------------------------- | :------------------------------------------------- | :------------------------------------------------- | | wait() | task.wait() | RunService.Heartbeat | | wait(n) | Library.task.wait()\|task.wait(n) | | | spawn(f) | Library.task.defer()\|task.defer(f) | Library.task.delay()\|task.delay(0, f) | | delay(n, f) | Library.task.delay()\|task.delay(n, f) | | | spawn(function() f(uv1, ...) end) | Library.task.defer()\|task.defer(f, uv1, ...) | | | Library.task.delay()\|task.delay(0, f, uv1, ...) | | delay(n, function() f(uv1, ...) end) | Library.task.delay()\|task.delay(n, f, uv1, ...) |
task.regeneración
task.spawn() toma un hilo o función y la reanuda inmediatamente a través del programador del motor a través del programador del motor.Se pasan argumentos adicionales al hilo o función que se está reanudando.
El siguiente ejemplo de código es un ejemplo de cómo puedes usar task.spawn() cuando llamas a una función que puede producir mientras se itera sobre un conjunto de objetos:
local function playerAdded(player)
...
(yield)
end
for _, player in Players:GetPlayers() do
task.spawn(playerAdded, player)
end
task.defer
task.defer() toma un hilo o función y la pospone hasta el próximo ciclo de reanudación en el que se reanuda con el Programador de tareasdel motor.Se pasan argumentos adicionales al hilo o función de reanudación.
Generalmente deberías usar esto cuando quieras un comportamiento similar a task.spawn() pero no te importa el hilo que se ejecuta inmediatamente.El siguiente ejemplo de código ilustra cómo la declaración print() para "A" se pospondrá hasta que se ejecute la declaración print() para "B" :
task.defer(print, "A")print("B")--> B--> A
task.delay
task.delay() toma un hilo o función y la programa para su reanudación después de que expire la cantidad de tiempo dada en el siguiente paso Heartbeat.El hilo se reanuda con el manejo de errores integrado y el soporte de otras características del motor.Cualquier argumento adicional se pasa al hilo o función de reanudación.
Dado que el tiempo de retraso real puede variar, el siguiente ejemplo de código ilustra cómo puede calcularlo pasando el tiempo actual como argumento:
task.delay(2, function(scheduledTime)
print(os.clock() - scheduledTime) --> 2.038702
end, os.clock())
Una duración de cero resultará en la reanudación del hilo o función en el siguiente paso.
tarea. espera
task.wait() produce el hilo actual hasta que expire la duración dada (en segundos) y luego reanuda el hilo en el siguiente paso Heartbeat.
El tiempo de rendimiento real puede variar. El siguiente ejemplo de código ilustra cómo este método lo devuelve por conveniencia:
Dado que el tiempo de retraso real puede variar, el siguiente ejemplo de código ilustra cómo puede obtener el tiempo real al almacenar el valor de devolución del método:
local elapsedTime = task.wait(2) -- espera 2 segundosprint(elapsedTime) --> 2.0792941
Si no se da una duración, la duración se restablecerá a cero, lo que significa que el hilo se reanudará automáticamente en el siguiente paso.Esto significa que task.wait() es equivalente en comportamiento a RunService.Heartbeat .