Saltar al contenido principal

Time

Time.DeltaTime() devuelve el delta de cuadros escalado en segundos. El argumento deltaTime pasado a Update y LateUpdate tiene el mismo valor.

local elapsed = 0.0

function Update(gameObjectId, deltaTime)
elapsed = elapsed + deltaTime
if elapsed >= 2.0 then
Log.Print("Two seconds elapsed")
elapsed = 0.0
end
end

FixedUpdate recibe fixedDeltaTime de la etapa de simulación limitada de 30 Hz. No usa un delta de cuadro renderizado para un movimiento determinista de paso fijo.

Escala y pausa de Time​

Time.SetTimeScale(scale) acepta valores finitos de 0.0 a 4.0 y devuelve false cuando el valor no es válido. Time.GetTimeScale() lee el valor actual. Una nueva escena siempre comienza en 1.0.

En 0.0, la simulación de juego a escala se detiene: los controladores nativos del jugador, la navegación, los eventos de movimiento y colisión de los personajes, las interacciones, la animación creada y esquelética, las líneas de tiempo y las partículas no avanzan. Update y LateUpdate todavía funcionan con deltaTime == 0, y la interfaz de usuario Input raw plus Canvas permanece activa. Esto permite que el mismo LuaBehaviour cierra la pantalla de pausa.

Time.UnscaledDeltaTime() devuelve la duración real del cuadro antes de aplicar la escala de tiempo. Úsalo para trabajo que deba continuar durante la pausa, como transiciones de menú o temporizadores de UI. Los clips de Animation independiente con Unscaled Time (runs while paused) también avanzan con escala temporal cero. Déjalo deshabilitado para animaciones que deban pausarse con el juego; consulta Animaciones independientes.

local menuCanvas = -1
local player = -1
local paused = false

function Awake(gameObjectId)
menuCanvas = Canvas.Find("Pause Menu")
player = GameObject.Find("Player")
end

local function SetPaused(value)
paused = value
Canvas.SetEnabled(menuCanvas, paused)
PlayerInput.SetEnabled(player, not paused)
Time.SetTimeScale(paused and 0.0 or 1.0)
end

function Update(gameObjectId, deltaTime)
if Input.GetButtonDown("Pause") then
SetPaused(not paused)
end
end

PlayerInput.SetEnabled es útil aquí porque deshabilita el movimiento nativo y la interacción sin deshabilitar el Player GameObject, su cámara o sus scripts Lua. Raw Input permanece disponible en el menú.