Java 理解游戏循环

Java 理解游戏循环,java,game-loop,Java,Game Loop,我正试图遵循一个关于用Java创建游戏的教程,但我在理解游戏循环方面遇到了困难 我不理解此delta变量的用途 感谢您的帮助 public void run() { long lastTime = System.nanoTime(); final double amountOfTicks = 60.0; double ns = 1000000000 / amountOfTicks; double delta = 0; while(running) {

我正试图遵循一个关于用Java创建游戏的教程,但我在理解游戏循环方面遇到了困难

我不理解此
delta
变量的用途

感谢您的帮助

public void run() {
    long lastTime = System.nanoTime();
    final double amountOfTicks = 60.0;
    double ns = 1000000000 / amountOfTicks;
    double delta = 0;

    while(running) {
        long now = System.nanoTime();
        delta += (now - lastTime) /ns;
        if(delta >= 1) {
            tick();
            delta --;
        }
    }
}
  • 了解纳秒是什么。一纳秒是十亿分之一秒; 一秒钟=100000000纳秒
  • 10亿除以
    amontofticks
    表示10亿纳秒内的滴答数(即一秒钟内的滴答数)
  • 在Java中,将双精度值与整数值进行比较会得到双精度值。测试
    if(delta>=1)
    检查delta是否大于1秒的滴答声
  • 如果一秒钟的滴答声还没有过去,什么也不要做
  • 如果经过了1秒的滴答声,则调用滴答声并从增量中删除1秒
  • 请注意,增量是滴答声的累积
  • 这是一个繁忙循环的好例子, 这通常表示开发人员不称职

    代码的目的似乎是通知未来的维护开发人员,作者是一个不称职的开发人员

    编辑
    如前所述#2是每滴答的纳秒数。

    这似乎是一种以每秒预定帧数执行游戏逻辑的方法,与CPU的实际速度无关。我希望tick()函数是执行游戏循环的地方

    你不了解它的什么?你不了解它的什么?没有什么需要了解的——在你的头脑中尝试不同的
    nanoTime
    值,然后运行代码。@EJoshuaS我不了解delta变量是如何工作的,它的用途是什么。还有,你说“你不了解它是如何工作的”是什么意思?2是错误的。100000000纳秒/秒/60滴答声/秒=16666666.6666。。。ns/滴答声,而不是“一秒钟内滴答声的数量”,因为您已经知道该数字(60)。