unity3d 如何改变Time.deltaTime的值?

wfypjpf4  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(266)

有没有办法用反射或其他方法来改变Unity的Time.deltaTime值。我们有一个重放系统,主要用于搜索bug。它存储了所有的输入事件和delta时间值,我们可以完全相同地模拟游戏。但是要强制delta时间值,我们必须定义并使用一个自定义的deltaTime变量。我想去掉这个变量,也强制Unity。的系统来使用我们的价值。

class SystemManager
{
     List<System> systems;
     void Update()
     {
          if(replay)
          {
               DTime.deltaTime = deltaTimeBuffer.GetValue();
          }else
          {
               DTime.deltaTime = Time.deltaTime;
          }

          foreach system in systems
               system.Update();

     }
}

class System
{
     void Update()
     {
          position += DTime.deltaTime * velocity;
          // I want to get rid of DTime.deltaTime and use Time.deltaTime
     }
}
lymgl2op

lymgl2op1#

使用反射更改平台范围内的已知变量可能会导致一些奇怪的错误,例如,团队中的“新开发人员”将不知道该特性,并且必须知道为什么他的deltaTime不是他所期望的。
不管这个题外话-也许不完全改变deltaTime直接,但你可以改变你的目标帧速率。
https://docs.unity3d.com/ScriptReference/Application-targetFrameRate.html
因为增量时间正好是:
从最后一帧到当前帧的时间间隔(以秒为单位)(只读)。
来源:https://docs.unity3d.com/ScriptReference/Time-deltaTime.html
通过计算新的目标帧速率(如果您的机器能够稳定地工作在该帧速率),您可能会得到您想要的deltaTime。

相关问题