【Unity API】2---常用Time类

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函数。

扫描二维码关注公众号,回复: 3547592 查看本文章

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

猜你喜欢

转载自blog.csdn.net/A2689863090/article/details/82968922