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