gpt4 book ai didi

java - 游戏循环性能问题

转载 作者:行者123 更新时间:2023-12-01 09:53:10 25 4
gpt4 key购买 nike

我正在用 Java 制作炸弹人游戏,该游戏似乎会减慢 PC 的速度,导致处理器和 CPU 过载。我在另一个游戏中使用了该循环,它运行良好,没有造成任何性能问题。然而我确实注意到,简单地注释掉 gameloop() 会导致重大的性能问题

我正在使用的游戏循环:

public void start() {
window.setVisible(true);
running = true;
int fps = 60;
double timePerTick = 1e9 / fps;
double delta = 0;
long now;
long lastTime = System.nanoTime();

while (running) {
now = System.nanoTime();
delta += (now - lastTime) / timePerTick;
lastTime = now;
if (delta >= 1) {
gameLoop(); /* commenting this out will cause major performance
* problem to the PC */
delta--;
}
}
}

@Override
public void gameLoop() {
if(!gameover){
run();
gui.repaint();
}
}

此循环是否存在可能导致问题的问题,或者是否有更好的方法可以减少性能问题

[编辑]我更改了循环以使用计时器执行类似的任务,它工作正常并且不会导致任何性能问题,此方法仍然有问题(长期问题)?

public void start(int fps){
window.setVisible(true);
running = true;
gameTimer.scheduleAtFixedRate(new GameTimer(), 0, 1000/fps);
}

private class GameTimer extends TimerTask{

@Override
public void run(){
gameLoop();
}
}

最佳答案

您正在进行无限循环,没有任何暂停,这会消耗 100% 的 CPU,在您的情况下,根据您的需要,您应该定义帧速率并相应地设置 sleep 时间长度,如下所示:

    run();
gui.repaint();
// Make the current thread sleeps 1 000 milliseconds which means 1 frame per sec
Thread.sleep(1000L);

关于java - 游戏循环性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37467336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com