1.Time.deltaTime(最常用,运动或者动画相关)
以秒为单位花费的时间完成最后一帧(只读)。
使用此功能可以使您的游戏帧速率独立。
如果您在每个帧中添加或减去一个值,则应该与Time.deltaTime相乘。 当你与Time.deltaTime相乘时,你基本上表达了:我希望每秒移动10米而不是每帧10米。
当从MonoBehaviour的FixedUpdate内部调用,返回固定帧率增量时间。
请注意,您不应该依赖OnGUI内部的Time.deltaTime,因为每帧可以多次调用OnGUI,并且deltaTime将在每次调用时保持相同的值,直到下一帧再次更新它。
2.Time.timeScale(时间速率)
时间流逝的规模。 这可以用于慢动作效果。
当timeScale为1.0时,时间和实时一样快。 当timeScale为0.5时,时间比实时慢2倍。
当timeScale设置为零时,如果所有功能都与帧速率无关,则游戏基本暂停。
除了realtimeSinceStartup,timeScale会影响Time类的所有时间和delta时间测量变量。
如果降低timeScale,建议还将Time.fixedDeltaTime降低相同的量。
当timeScale设置为零时,不会调用FixedUpdate函数。
3.Time.realtimeSinceStartup(可以用于做性能测试)
realtimeSinceStartup返回自启动以来的时间,不受Time.timeScale的影响。 realtimeSinceStartup在播放器暂停时(在后台)也会不断增加。 当你想通过将Time.timeScale设置为零来暂停游戏时,使用realtimeSinceStartup非常有用,但仍希望能够以某种方式测量时间。
请注意,realtimeSinceStartup返回系统计时器报告的时间。 根据平台和硬件的不同,即使连续几个帧也可以报告相同的时间。 如果你按时差划分某些东西,请考虑到这一点(时差可能会变为零!)。
代码例子:
public float Count = 10000;
// Use this for initialization
void Start () {
float time1 = Time.realtimeSinceStartup;
for(int i = 0; i < Count; i++)
{
Method1();
}
float time2 = Time.realtimeSinceStartup;
Debug.Log(time2 - time1);
float time3 = Time.realtimeSinceStartup;
for (int i = 0; i < Count; i++)
{
Method2();
}
float time4 = Time.realtimeSinceStartup;
Debug.Log(time4 - time3);
}
// Update is called once per frame
void Update () {
}
void Method1()
{
int i = 1 + 2;
}
void Method2()
{
int j = 1 *2;
}
测试结果:
还有很多,具体官网:https://docs.unity3d.com/ScriptReference/Time.html