C# 德尔塔蒂姆在团结中发生了什么?

C# 德尔塔蒂姆在团结中发生了什么?,c#,unity3d,frame-rate,C#,Unity3d,Frame Rate,首先我想说的是,我正在Unity engine中做我的第一个项目,所以这个问题可能很愚蠢。据我所知,Time.deltaTime和Time.fixedDeltaTime存储帧间的大致时间(图形和物理)。我想为我的游戏实现一个简单的fps计数器。函数如下所示: void FPS_Counter() { float frequency_physics = 1f/Time.fixedDeltaTime; float frequency_graphics = 1f/Time.del

首先我想说的是,我正在Unity engine中做我的第一个项目,所以这个问题可能很愚蠢。据我所知,Time.deltaTime和Time.fixedDeltaTime存储帧间的大致时间(图形和物理)。我想为我的游戏实现一个简单的fps计数器。函数如下所示:

void FPS_Counter()
 {
     float frequency_physics = 1f/Time.fixedDeltaTime;
     float frequency_graphics = 1f/Time.deltaTime;
     fps.text = "Phys: " + frequency_physics.ToString("N0") + "\n" + "Graph: " + frequency_graphics.ToString("N0");
 }

在Update()中调用FPS_计数器()。对于固定和“正常”增量时间,脚本始终输出50[hz]的值。似乎频率锁定在50 fps。这是正常的行为吗?Unity是否将调用FixeUpdate()和update()锁定为50赫兹?如果是这样,我可以在某个地方更改此值以查看我可以获得多少fps吗?

fps被锁定为特定速率的原因有很多。但是,Time.deltaFixedTime变量始终锁定为特定的更新值。默认情况下,每次固定更新之间的间隔为:0.02秒

如果您需要一个FPS计数器进行调试,我可以参考以下内容:

帧速率被锁定的原因可能是,正如@UnholySheep所说的,Vsync、计算机限制(尽管它很可能会反弹)以及其他一些原因


这是一个链接,如果VSync打开,您可以在其中关闭它。

如果您打开了VSync,并且物理模拟的更新速率设置为0.02ms(默认值),则这些结果是预期的固定时间默认值始终为0.02f。但是,Time.DeltaTime会因每帧的处理时间而有所不同:)有关如何更改,请参阅和手册those@HåvardNygård不正确,您可以在时间管理器中更改FixedDelatime(参见我之前的评论)哦@UnholySheep我将修改我的评论。抱歉。IIRC VSync Count默认设置为“Every VBlank”(但我已经有一段时间没有使用Unity了,所以对此我不是100%确定)已选中,可以确认。