Java 主游戏循环
我正在编写一个游戏循环,我在这里的示例中找到代码。我还研究了执行游戏循环的其他方法,例如本文。我无法让这些工作中的任何一个。所以我保留了第一个链接中的那个。
我想知道:
- 我编写游戏循环的方式是执行此操作的好方法吗?
- 有什么建议吗?
- 我应该在游戏循环中使用吗?
Thread.sleep();
这是我当前的代码:
public void run(){
long lastLoopTime = System.nanoTime();
final int TARGET_FPS = 60;
final long OPTIMAL_TIME = 1000000000 / TARGET_FPS;
long lastFpsTime = 0;
while(true){
long now = System.nanoTime();
long updateLength = now - lastLoopTime;
lastLoopTime = now;
double delta = updateLength / ((double)OPTIMAL_TIME);
lastFpsTime += updateLength;
if(lastFpsTime >= 1000000000){
lastFpsTime = 0;
}
this.updateGame(delta);
this.repaint();
try{
Room.gameTime = (lastLoopTime - System.nanoTime() + OPTIMAL_TIME) / 1000000;
System.out.println(Room.gameTime);
Thread.sleep(Room.gameTime);
}catch(Exception e){
}
}