编写代码超过限制时间_编写良好的刻度线限制

编写代码超过限制时间

一开始我在很多游戏教程中都看到过,很多人在制作一个价格限制器,这比实际的难度要大得多。 如果您不熟悉它,可以使用刻度限制器来限制每秒的刻度数,以便游戏在每个设备上以相同的速度运行。

(所有代码都是用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

编写代码超过限制时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值