Documentation

Unity Engine


User Manual

Script Reference

Unity Engine


In-game time and real time

The configurable relationship between in-game time and real time and the potential effects.
Read time 1 minuteLast updated 14 days ago

The Time.timeScale property defines the rate at which time passes in your game world relative to real time. A
Time.timeScale
value of 1.0 means your in-game time matches real time. A value of 2.0 makes time pass twice as quickly in your game as in the real world, which speeds up the action in your game. A value of 0.5 slows gameplay down to half speed. A value of zero makes your in-game time stop completely.
Time.timeScale
doesn't actually slow execution but instead changes the time step reported to the
Update
and
FixedUpdate
functions with Time.deltaTime and Time.fixedDeltaTime.
Your
Update
function may be called just as often when you reduce the time scale, but the value of
Time.deltaTime
each frame will be less. Other script functions aren't affected by the time scale, so you can for example display a GUI with normal interaction when the game is paused.
For special time effects such as slow-motion, it's sometimes useful to slow the passage of game time so that animations and time-based calculations in your code happen at a slower pace. Furthermore, you may sometimes want to freeze game time completely, as when the game is paused.
The Time window has a property to let you set the time scale globally but it's usually more useful to set the value from a script using the Time-timeScale property:
//C# script exampleusing UnityEngine;using System.Collections;public class ExampleScript : MonoBehaviour { void Pause() { Time.timeScale = 0; } void Resume() { Time.timeScale = 1; }}

Additional resources