目录
5.Time.timeScale = 1.0 (且运行中发生卡顿)
1.前言
想来大家都知道Unity中Time.timeScale可以影响游戏的时间,一般通过调整这个值可以实现动画、基于差值的计算、特效等的加速或减速、甚至是停止效果。那么这个值到底影响的是什么时间,它对Update、LateUpdate、和FixedUpdate有影响吗?
2.测试
1.Time.timeScale = 1.0 (无卡顿)


如上图,这是Time.timeScale = 1.0 时的测试数据,且运行流畅
1)白色log为Update中的打印
2)黄色log为FixedUpdate中的打印;
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时间翻了一倍,说明什么呢?我们先放一放,后面来分解

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

被折叠的 条评论
为什么被折叠?



