首页 > 解决方案 > 如何从 Phaser3 中的其他场景获取数据?

问题描述

我已经看到了与我类似的其他问题的答案,通过 scene.start() 传递数据并使用 init 函数获取它。但我问的是不同的东西。

假设我在场景 A 上,它开始场景 B 并暂停。然后我对场景 B 进行一些计算,我想在恢复时将结果传递给场景 A。

有没有办法做到这一点?

标签: javascriptphaser-framework

解决方案


https://stackblitz.com/edit/so-phaser-resume-data

类似于使用 start 传递数据。对于像恢复这样的调用,还有一个可选的数据参数。它被传递给场景恢复事件的侦听器。

// scene-a #create
this.events.on('resume', (scene, data) => {
    this.textObj.setText(data.someMath.toString());
});

// scene-b
this.game.scene.resume('scene-a', {someMath});

或者,您可以从另一个场景中限定某些内容,并从那里注册一个恢复事件侦听器。

// scene-b
const sceneA = this.game.scene.getScene('scene-a');
sceneA.events.once('resume', () => {
    sceneA.textObj.setText('something from this scene, scene-b');
});
this.game.scene.resume('scene-a');

推荐阅读