Time.deltaTime能达到0吗?

Can Time.deltaTime reach 0?

这是短代码示例

    if (timer < 0)
    {
        timer = cooldown;
    }
    else if (timer > 0)
    {
        timer -= Time.deltaTime;
    }
    else if (timer == 0)
    {
        print(0);
    }

并且可能是 cooldown = 1

我的问题很简单: 是否有可能达到状态 timer == 0 ? 我的意思是理论上有可能用 Time.deltaTime 精确命中 0 吗?我知道考虑到 float 的大小,这听起来很愚蠢,但如果这种情况可能发生,我仍然很感兴趣。

增量时间不能为零。增量时间表示上一帧和当前帧之间的时间差。所以理论上它不能为零。也许你的计时器变量可以,但它的机会真的很低。我假设你的计时器变量是浮动的,所以当你检查它的 0 是否实际上是 0.000000(类似的东西)时。但是你的计时器变量会像 0.969987 , 0.9525292 , ...... , 0.003284598 那样减少,之后它会跳到负值,比如 -0.01333026。当它变为负值时,您将错过第三个 if 语句。

if (timer <= 0)
{
    timer = cooldown;
    print(0);
}
else if (timer > 0)
{
    timer -= Time.deltaTime;
}

我相信这是一个更好的解决方案。