为什么对游戏循环使用 while 循环?
Why use a while loop for a game loop?
只是想知道,使用 while 循环作为游戏循环是否有特定原因。或者我可以使用另一种方法,比如这个。
注意:这不是正确的代码,尚未经过测试。这只是一个大概的想法。此示例也不符合特定的编码语言,但可能主要遵循 JavaScript,因为这是我脑海中浮现的编码语言。我实际上在飞镖中尝试过类似的东西(google flutter)。
var startTime;
var running = false;
function loop1(){
startTime = system.currentMillis();
loop2();
}
loop2(){
gameUpdate();
//ignore my math, I did not focus on doing that property
//this is just an example and is not proper math
var delay = 1000 / (system.currentMillis() - startTime);
setTimeout(loop3, delay);
}
loop3(){
if(running){
loop1();
}
}
编辑:使用类似的东西来避免使用 sleep();
的需要对性能有帮助吗? (或 phone 电池)
完全可以将您的代码用作主要游戏循环。首选 while
的原因是因为主游戏循环会无休止地执行直到中止,这只需使用 while (true)
并使用 break
或 while (abort == false)
在内部某处中止即可并在内部某处设置 abort = true
。请注意,其他循环变体(例如 for
和 do-while
更加冗长,除非您的语言允许您这样做 for (;;)
。另请注意,您可以使用 while
循环将建议的循环重组为更简单的版本。
只是想知道,使用 while 循环作为游戏循环是否有特定原因。或者我可以使用另一种方法,比如这个。
注意:这不是正确的代码,尚未经过测试。这只是一个大概的想法。此示例也不符合特定的编码语言,但可能主要遵循 JavaScript,因为这是我脑海中浮现的编码语言。我实际上在飞镖中尝试过类似的东西(google flutter)。
var startTime;
var running = false;
function loop1(){
startTime = system.currentMillis();
loop2();
}
loop2(){
gameUpdate();
//ignore my math, I did not focus on doing that property
//this is just an example and is not proper math
var delay = 1000 / (system.currentMillis() - startTime);
setTimeout(loop3, delay);
}
loop3(){
if(running){
loop1();
}
}
编辑:使用类似的东西来避免使用 sleep();
的需要对性能有帮助吗? (或 phone 电池)
完全可以将您的代码用作主要游戏循环。首选 while
的原因是因为主游戏循环会无休止地执行直到中止,这只需使用 while (true)
并使用 break
或 while (abort == false)
在内部某处中止即可并在内部某处设置 abort = true
。请注意,其他循环变体(例如 for
和 do-while
更加冗长,除非您的语言允许您这样做 for (;;)
。另请注意,您可以使用 while
循环将建议的循环重组为更简单的版本。