我在代码中创建了2个计时器。一个是逻辑计时器,它每0.017秒更新一次逻辑:

logicTimer = new Timer();
    logicTimer.scheduleTask(new Timer.Task() {
        @Override
        public void run() {
            updateLogic();
        }
    }, 0f, timePerProcessing);


另一个是每3秒产生一次障碍:

meteoroidTimer = new Timer();
    meteoroidTimer.scheduleTask(new Timer.Task() {
        @Override
        public void run() {
            generateMeteoroids();
        }
    },1f,3f);


当我暂停游戏并随后恢复播放时,我的逻辑计时器仍然有效,但我的障碍计时器无效。我以为是因为我在计时器中调用的方法中使用了Random对象,但是我尝试了一个简单的方法:

System.out.println("It is showing");


而且仍然无法恢复。

我的暂停和恢复代码:

@Override
public void pause(){
    meteoroidTimer.stop();
    logicTimer.stop();
}

@Override
public void resume(){
    meteoroidTimer.start();
    logicTimer.start();
}

最佳答案

您不需要使用timer.stop并在履历表上加注星标,因为当您离开应用程序时,libgdx无论如何都会停止渲染/更新,因此无论如何您的定时器都不会更新。

09-26 05:23