在Phaser 3中暂停和恢复游戏

9

在Phaser-3框架中,有没有一种方法可以暂停正在运行的游戏并恢复(使用按钮)? 给出的Phaser-2方法不起作用。


请查看它们的文档 - Margon
1
@Margon 这只是给你暂停事件的时间,它不会暂停游戏。 - Totty.js
1
当游戏被移至后台(例如访问其他标签页)时,暂停游戏是自动完成的。我还没有找到一种暂停主循环的方法,但我找到了睡眠主循环的方法(游戏循环通过每个场景循环迭代)。因此,如果您想暂停所有场景而不循环遍历活动场景,则可以执行game.loop.sleep();和game.loop.wake()。这将停止所有场景的更新,但场景将在其活动属性更改之前停止,因此如果需要,请确保检查游戏循环状态以及场景状态。 - Harry Scheuerle
@HarryScheuerle 谢谢,game.loop.sleep()game.loop.wake() 是唯一对我有效的解决方案。 - chylinski
3个回答

14

在Phaser3中,您可以同时运行多个场景。因此,您可以使用“恢复”按钮创建一个新场景并暂停当前场景。如果您有2个场景A和B,则可以执行以下操作:

# In scene A
this.scene.launch('sceneB')
this.scene.pause();

# Then in sceneB, you can return to sceneA:
button.on('pointerdown', function() {
    this.scene.resume('sceneA');
    this.scene.stop();
})

1
看起来已经过时了。 - Totty.js
@Totty.js,这可能不是ES6的答案,但对他似乎起作用了。我建议你在这里查看所有场景示例:https://labs.phaser.io/index.html?dir=scenes/&q= - StefanBob
谢谢,看起来有很多超过50个的例子要检查。(而且它们加载得非常慢) - Totty.js

3

1
如果您只想冻结一个角色,可以使用 this.sprite.body.moves = false;

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