javascript 可笑的差性能与相位器3移动的游戏

oiopk7p5  于 2023-02-07  发布在  Java
关注(0)|答案(2)|浏览(141)

抱歉英语不好。所以,我有大约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.我还能检查什么,这些延迟的原因是什么?请帮助。

ccrfmcuu

ccrfmcuu1#

WebView在某些设备上确实很慢。尝试禁用物理(如果有帮助的话,用你的自定义代码替换它)。
从我的经验来看,搬到 cordova 并使用webgl确实帮助很大。如果你在应用配置中添加isGame:true,一些设备会像预期的那样开始工作。
你可以尝试的最后一步是将webview移动到自定义版本(对于cordova,这将是xwalk或crosswalk插件),这将显著增加应用程序的大小(~ 60 Mb),但迫使它在更广泛的设备列表上按预期工作。

gxwragnw

gxwragnw2#

我可能有点晚了,但是如果你正在读这篇文章,试着把"powerPreference":"高性能"添加到game config中。
TLDR:

new Phaser.Game({powerPreference:"high-performance",...})

它给了一个公平的性能提升,至少在谷歌浏览器。

相关问题