設置我的遊戲循環如下:渲染HTML5畫布特效,只有當幀率允許它
window.requestAnimFrame = (function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(callback){
window.setTimeout(callback, 1000/60);
};
})();
(function gameLoop() {
var time = new Date().getTime();
var dt = (time - prevFTime)/1000.0;
prevFTime = time;
state.effectsOn = dt > 1/60.0 ? true : false;
state.effectsOn = false;
//game rendering logic goes here
window.requestAnimFrame(gameLoop);
})();
現在我想要做的是,如果effectsOn
變量在良好的幀速率設置的原因,那麼我會在我的遊戲中呈現一些特殊效果。如果沒有,我會簡單地跳過渲染這些特殊效果。
但我明顯的問題是,如果dt>1/60
和effectsOn設置爲true。我將渲染特殊效果,這將導致渲染時間的增加,因此可能會使dt < 1/60
因此使effectOn爲false。
有什麼好的替代方法來實現我想要做的?
在最壞的情況下,我可以把一個複選框之類的事情在我的主菜單,讓用戶決定是否渲染特效或不...
順便說一句,如果可能的話,不要只是開/關。您可以嘗試設置粒子數量,如所有/最/少/無,取決於幀率。 – Kos
我也會推薦什麼樣的「大型」遊戲可以在專門設置的屏幕上進行測量,其中有很多效果並基於此設置設置,以便用戶通過遊戲獲得一致的體驗。 – Kos