Phaser 3 移动游戏性能极差

3
抱歉我的英文不好。所以,在使用Android Studio和Webview制作的移动游戏中,我大约有30fps。我使用的框架是Phaser 3。我决定进行简单的测试。我删除了所有代码,只留下在指针松开事件中显示game.loop.actualfps的代码。我也从加载器中删除了所有精灵。单击屏幕时,我得到了约35fps,这很奇怪,因为只有4行代码。当我将fps显示放入更新函数中时,我得到了20fps。我要补充一点,在电脑上几乎始终有60fps。
如果我将代码替换为使用Phaser 2制作的旧游戏,则可以达到50-60fps。 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);

}

我尝试将类型从自动更改为画布和WebGL,但没有任何帮助。 我知道这些全局变量很糟糕,但现在不是重点:D。 我还可以检查什么,这些延迟的原因可能是什么? 请帮帮我。


请有人帮帮忙,我尝试了所有方法。已删除所有内容,但仍然使用纯Phaser只有40帧每秒。 - sidsonpatrick
2个回答

2

在某些设备上,Webview非常缓慢。 尝试禁用物理效果(如果有必要,请使用自定义代码进行替换)。

从我的经验来看,转到cordova并使用webgl可以帮助很多。 如果您将isGame:true添加到应用程序配置中,则某些设备将开始按预期工作。

最后一个可尝试的步骤是将webview移动到自定义webview(对于cordova,这将是xwalk或crosswalk插件),这将显着增加应用程序的大小(约60Mb),但会强制其在更广泛的设备列表上按预期工作。


0

我可能有点晚了,但如果您正在阅读此内容,请尝试将"powerPreference":"high-performance" 添加到游戏配置中。

简而言之:

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

它可以提供相当不错的性能提升,至少在Google Chrome中是如此。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接