Programar código

*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 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 segundos
print(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 .