编写代码超过限制时间
一开始我在很多游戏教程中都看到过,很多人在制作一个价格限制器,这比实际的难度要大得多。 如果您不熟悉它,可以使用刻度限制器来限制每秒的刻度数,以便游戏在每个设备上以相同的速度运行。
(所有代码都是用Java编写的)。
我看到很多人这样做:
long newTime = System.nanoTime();
long frameTime = newTime - currentTime;
currentTime = newTime;
accumulator += frameTime;
while (accumulator >= nanosPerLogicTick) {
//tick and stuff
}
或更糟糕的是:
int fps = 60;
double timePerTick = 1000000000 / fps;
double delta = 0;
long now;
long lastTime = System.nanoTime();
long timer = 0;
int ticks = 0;
while(running){
now = System.nanoTime();
delta += (now - lastTime) / timePerTick;
timer += now - lastTime;
lastTime = now;
if(delta >= 1){
//tick and stuff
ticks++;
delta--;
}
if(timer >= 1000000000){
ticks = 0;
timer = 0;
}
}
哇...看起来还多余吗? 在Java中,结果非常简单:
(包含上次的全局变量)
private long lastTick = System.currentTimeMillis();
最后,if语句:
if (System.currentTimeMillis() - lastTick >= (1000 / 60)) {
lastTick = System.currentTimeMillis();
//tick and stuff
}
希望这可以帮助!
翻译自: https://dev.to/mabla0531/writing-good-tick-limiters-33a3
编写代码超过限制时间