Unity3d关于Time.timeScale对于游戏时间及Update、LateUpdate、FixedUpdate的影响测试

本文深入探讨Unity中Time.timeScale参数如何影响游戏时间、动画及特效,解析其对Update、LateUpdate和FixedUpdate的影响机制,提供实用代码示例。

目录

1.前言

2.测试

1.Time.timeScale = 1.0 (无卡顿)

2.Time.timeScale = 0.5 (无卡顿)

3.Time.timeScale = 2.0 (无卡顿)

4.Time.timeScale = 0 (无卡顿)

5.Time.timeScale = 1.0 (且运行中发生卡顿)

3.结论

4.总结

5.范例


1.前言

想来大家都知道Unity中Time.timeScale可以影响游戏的时间,一般通过调整这个值可以实现动画、基于差值的计算、特效等的加速或减速、甚至是停止效果。那么这个值到底影响的是什么时间,它对Update、LateUpdate、和FixedUpdate有影响吗?

2.测试

1.Time.timeScale = 1.0 (无卡顿)

如上图,这是Time.timeScale = 1.0 时的测试数据,且运行流畅

1)白色logUpdate中的打印

2)黄色logFixedUpdate中的打印;

3)offsetTime = 当前帧的Time.time - 上一帧的Time.time

4)Time.deltaTime是上一帧的调用时长,可以看到它与Update中打印的offsetTime相同,所以Time.deltaTime = 当前帧的Time.time - 上一帧的Time.time

5)Time面板的Fixed Timestep设置为0.02,所以Time.fixedDeltaTime = 0.02

6)FixedUpdate中打印的offsetTime = 0.02,它与Time.fixedDeltaTime相同

7)offsetRealTime = 当前帧的Time.realtimeSinceStartup - 上一帧的Time.realtimeSinceStartup,可以看到在不卡顿的情况下offsetRealTime和offsetTime很接近

2.Time.timeScale = 0.5 (无卡顿)

这是Time.timeScale = 0.5 时的测试数据,且运行流畅

1)可以看到Time.deltaTime平均 = 0.008秒,相当于 Time.timeScale = 1.0 时平均时间(0.016)的一半,offsetTime也缩小了一半,说明Time.time受Time.timeScale的缩放影响,且成正比

2)Update中打印的offsetRealTime没有变化,说明Time.realtimeSinceStartup不受Time.timeScale影响

3)FixedUpdate的调用频率变慢了,基本每两个Update调用才调用一次,可以看到Time.fixedDetlaTime和FixedUpdate中打印的offsetTime没有发生变化依然是0.02,FixedUpdate中打印的offsetRealTime时间翻了一倍,说明什么呢?我们先放一放,后面来分解

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值