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í.

Programar código es útil en muchas situaciones, como asegurarse de que el código se ejecute después de que se haya completado una acción o ciclo específico, 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 gestionar y programar código. También puedes usar una biblioteca similar llamada coroutine para programar el código que tiene algo de funcionalidad adicional.

Métodos comunes

Los siguientes son los métodos más comunes de task utilizados para programar código. Debes usar los métodos de tareas en lugar de los métodos de programación heredados, como wait(), para asegurarte de que tu código se ejecute de manera óptima.

La siguiente tabla lista los métodos globales heredados relevantes y sus contrapartes preferidas y más optimizadas:

Métodos globales heredadosMétodos de tareaAlternativas adicionales
wait()task.wait()RunService.Heartbeat
wait(n)task.wait(n)
spawn(f)task.defer(f)task.delay(0, f)
delay(n, f)task.delay(n, f)
spawn(function() f(uv1, ...) end)task.defer(f, uv1, ...)task.delay(0, f, uv1, ...)
delay(n, function() f(uv1, ...) end)task.delay(n, f, uv1, ...)

task.spawn()

task.spawn() toma un hilo o función y lo reanuda inmediatamente 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() al llamar a una función que puede ceder mientras itera sobre un conjunto de objetos:


local function playerAdded(player)
print(player)
end
for _, player in Players:GetPlayers() do
task.spawn(playerAdded, player)
end

task.defer()

task.defer() toma un hilo o función y lo pospone hasta el final del punto de reanudación actual dentro del cuadro actual. Se pasan argumentos adicionales al hilo o función que se reanuda.

Debes usar esto típicamente cuando quieres un comportamiento similar al de task.spawn() pero no te importa que el hilo se ejecute inmediatamente. El siguiente ejemplo de código ilustra cómo la declaración print() para "A" se pospondrá hasta después de 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 lo programa para su reanudación después de que transcurra el tiempo dado en el siguiente paso Heartbeat. El hilo se reanuda con manejo de errores incorporado y soporte para otras características del motor. Cualquier argumento adicional se pasa al hilo o función que se reanuda.

Dado que el tiempo de retardo real puede variar, el siguiente ejemplo de código ilustra cómo puedes 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 que el hilo o función se reanude en el siguiente paso.

task.wait()

task.wait() cede el hilo actual hasta que transcurra la duración dada (en segundos) y luego reanuda el hilo en el siguiente paso Heartbeat.

El tiempo de espera real puede variar. El siguiente ejemplo de código ilustra cómo este método devuelve el tiempo para conveniencia:

Dado que el tiempo de retardo real puede variar, el siguiente ejemplo de código ilustra cómo puedes obtener el tiempo real almacenando el valor de retorno 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 establecerá en 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.

©2026 Roblox Corporation. Roblox, el logotipo de Roblox y "Powering Imagination" son algunas de nuestras marcas registradas y no registradas en los Estados Unidos y otros países.