我已经多次看过这段代码。
long lastTime = System.nanoTime();
final double ticks = 60D;
double ns = 1000000000 / ticks;
double delta = 0;
上面的代码占用系统时间并将其存储到lastTime
. 60 个滴答应等于每秒更新的次数。
while(running){
long now = System.nanoTime();
delta += (now - lastTime) / ns;
lastTime = now;
if(delta >= 1){
tick();
delta--;
}
它需要now
并减去lastTime
,然后将其转换为纳秒/60。是否有一些保证,超过 60now
和lastTime
到 nano 之间的时间差会导致 delta 大于或等于每秒 1、60 次?我不明白为什么tick();
每秒会运行大约 60 次。根据我的计算,每次循环运行 delta 都会增加 0.0025 左右。