抱歉英语不好。所以,我有大约30 fps在我的移动的游戏与android工作室,使用webview。我使用的框架是phaser 3。我决定做一个简单的测试。我删除了所有的代码,离开,在指针向上的事件,这是显示game. loop. actualfps。我已经删除了所有的精灵从加载器太。点击屏幕,我有大约35 fps,这是奇怪的只有4行代码。当我把fps显示在更新功能,我有20 fps。我会补充说,在电脑上有几乎恒定的60 fps。
如果我把代码替换成我用Phaser 2做的旧游戏,我有50- 60 fps。Phaser 3优化得不好吗?下面是我的boot.js文件代码:
let newWidth; let newHeight
function calculateDimensions(){
const targetWidth = 480;
const targetHeight =854;
const deviceRatio = (window.innerWidth/window.innerHeight);
const newRatio = (targetHeight/targetWidth)*deviceRatio;
newWidth = targetWidth;
newHeight = targetHeight*newRatio;
}
calculateDimensions();
const gameWidth = newWidth; const gameHeight = newHeight;
const config = {
type: Phaser.AUTO,
width:gameWidth,
heigth: gameHeight,
scale: {
mode:Phaser.Scale.ENVELOP,
autoCenter: Phaser.Scale.CENTER_BOTH
},
physics: {
default: 'arcade',
arcade: {
tileBias:8,
debug:false,
gravity: false
},
render: {
pixelArt: true
}
},
scene: [
preloader,loader,menu,
levelSelect,levelAlert,
shop,
winMenu,loseMenu,
level
]
};
window.onload = () => {
game = new Phaser.Game(config);
}
我试着把类型从auto改为canvas和webgl,没有用。我知道这些全局变量不好,但这不是现在的重点:D.我还能检查什么,这些延迟的原因是什么?请帮助。
2条答案
按热度按时间ccrfmcuu1#
WebView在某些设备上确实很慢。尝试禁用物理(如果有帮助的话,用你的自定义代码替换它)。
从我的经验来看,搬到 cordova 并使用webgl确实帮助很大。如果你在应用配置中添加isGame:true,一些设备会像预期的那样开始工作。
你可以尝试的最后一步是将webview移动到自定义版本(对于cordova,这将是xwalk或crosswalk插件),这将显著增加应用程序的大小(~ 60 Mb),但迫使它在更广泛的设备列表上按预期工作。
gxwragnw2#
我可能有点晚了,但是如果你正在读这篇文章,试着把"powerPreference":"高性能"添加到game config中。
TLDR:
它给了一个公平的性能提升,至少在谷歌浏览器。