C# Trouble Расчет дельты времени

Я пытаюсь создать систему синхронизации для игры, написанной на 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 работает правильно, но дельта-время кажется быстрее, чем должно быть.

Любая помощь приветствуется.:)

1 ответ

Решение

Значение 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);
}
Другие вопросы по тегам