C# 无法计算增量时间

C# Trouble Calculating Delta Time

我正在尝试用 C# 制作一个计时系统,但我在计算增量时间时遇到了问题。

这是我的代码:

private static long lastTime = System.Environment.TickCount;
private static int fps = 1;
private static int frames;

private static float deltaTime = 0.005f;

public static void Update()
{
    if(System.Environment.TickCount - lastTime >= 1000)
    {
        fps = frames;
        frames = 0;
        lastTime = System.Environment.TickCount;
    }
    frames++;

    deltaTime = System.Environment.TickCount - lastTime;

}

public static int getFPS()
{
    return fps;
}

public static float getDeltaTime()
{
    return (deltaTime / 1000.0f);
}

FPS 计数工作正常,但增量时间比应有的要快。

System.Environment.TickCount 的值在您的函数执行期间发生变化,这导致 deltaTime 移动得比您预期的要快。

尝试

private static long lastTime = System.Environment.TickCount;
private static int fps = 1;
private static int frames;

private static float deltaTime = 0.005f;

public static void Update()
{
    var currentTick = System.Environment.TickCount;
    if(currentTick  - lastTime >= 1000)
    {
        fps = frames;
        frames = 0;
        lastTime = currentTick ;
    }
    frames++;

    deltaTime = currentTick  - lastTime;

}

public static int getFPS()
{
    return fps;
}

public static float getDeltaTime()
{
    return (deltaTime / 1000.0f);
}