我是一名高级软件工程师,但对 Unity 编程完全陌生。几周以来,我一直在通过为自己编写一些 SteamVR 玩具来自学 Unity。我想询问 Unity 的标准内置方法来提高具有大量密集物理计算的程序的帧速率。
在我当前的 VR 场景中,我有一个球,Rigidbody
上面有一个。当我把它捡起来扔的时候,我让它自然地移动,但我在每次Update()
调用时都会用很小的力来调整着陆位置,并且总是击中目标。
我看到我的帧率大幅下降,所以我编写了自己的函数来限制更新,将它们限制为每秒 5 次。问题是,我应该使用一些标准的 Unity 行为而不是自己滚动这段代码吗?
在我的投掷脚本中,我维护了一堆顶级变量并首先更新它们以决定是否应该对当前帧进行计算。
private void updateCalculationFrame() {
isCalculationFrame = Time.time > nextCalculationTime;
while (nextCalculationTime < Time.time) {
nextCalculationTime += (1 / calculationsPerSecond);
}
}
在每一帧上,我运行这个函数,然后如果isCalculationFrame
是真的,我继续计算和添加力向量。我只是想知道我是否忽略了一些更标准的方法来用更少的代码做到这一点?我觉得这一定是一件很常见的事情。