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

本文深入解析Unity中的时间管理,涵盖Time.deltaTime、Time.timeScale和Time.realtimeSinceStartup等关键概念。详细说明了这些时间变量如何影响游戏性能,以及如何在游戏开发中正确应用它们,包括示例代码和使用场景。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值