代码之家  ›  专栏  ›  技术社区  ›  Jaggler3 Venkat Esan

C#计算增量时间的问题

  •  1
  • Jaggler3 Venkat Esan  · 技术社区  · 9 年前

    我正在尝试用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 回复  |  直到 4 年前
        1
  •  3
  •   KnightFox    9 年前

    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);
    }