在webpack / babel环境中,我运行了一个与此类似的示例(可在Phaser 3 Sandbox中找到);我刚刚添加了console.log(this)
并删除了图像load()
和add()
:
class MyScene extends Phaser.Scene {
constructor (config)
{
super(config);
}
preload ()
{
console.log(this);
}
create ()
{
}
}
var config = {
type: Phaser.WEBGL,
width: 800,
height: 600,
backgroundColor: '#000000',
parent: 'phaser-example',
scene: MyScene
};
var game = new Phaser.Game(config);
它可以工作,但是我自己的本地示例和在线Phaser 3沙箱之间有一个区别:
game
实例中没有MyScene
属性; console.log(this)
)。我注意到我可以使用Game
来获得Phaser.Scene.sys.game
实例,但是我想知道为什么在在线沙箱和我自己的示例之间没有相同的结果对象。
您可以在Phaser 3 API Documentation中阅读有关Phaser.Scene.game
的内容:
game:Phaser.Game
对Phaser.Game实例的引用。
只有在“场景注入贴图”中定义了此属性。
因此,我尝试在MyScene
构造函数中修改“场景注入贴图”,但目前我还不是很了解,我所有的尝试都失败了。
要使game
属性可用,我应该更改什么?
答案 0 :(得分:0)
我刚刚发现this post似乎可以回答这个问题:
嗨,场景有属性游戏(Phaser.Game),但似乎 一直未定义(在预加载,创建或更新 现场)。 Doc说:“只有在 “场景注入图”。我可以在默认注入图中看到它 ...但仍未定义。
另一方面,具有游戏属性的sys属性(对象) 在里面。我可以得到像this.sys.game这样的游戏参考,而不是 这个游戏。
使用this.sys.game是否正确?为什么此游戏不起作用?是 它是旧版本的剩余部分?
管理员回答:
是的,它根本不应该公开。我将其从地图上删除。它 应该永远不要使用。