如何更改Time.deltaTime值



是否有任何方法可以通过反射或其他方法更改Unity的Time.deltaTime值。我们有一个回放系统,我们主要用来寻找错误。它存储了所有的输入事件和delta时间值,我们可以完全相同地模拟游戏。但要强制使用deltaTime值,我们必须定义并使用自定义deltaTime变量。我想摆脱这个变量,并迫使团结的系统使用我们的价值观。

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
}
}

使用反射来更改平台范围内的已知变量可能会导致一些奇怪的错误,例如"新开发者";团队中的人不会知道这个特性,必须知道为什么他的deltaTime并不是他所期望的

不管这个题外话-也许不是直接改变deltaTime,但你可以改变你的目标帧速率。

https://docs.unity3d.com/ScriptReference/Application-targetFrameRate.html

由于增量时间只是:

从上一帧到当前帧的间隔(以秒为单位((只读(。

来源:https://docs.unity3d.com/ScriptReference/Time-deltaTime.html

通过计算新的目标帧速率(如果你的机器能够稳定地以该帧速率工作(,你可能会得到你想要的deltaTime。

最新更新