Phaser:使用多个场景时 setCollisionByProperty 的问题
2022-06-22
148
我是Phaser的首次亮相。我尝试制作一个迷你RPG游戏。 我制作了地图并将其导出为.json对象,并使用setCollisionByProperty使我的精灵和瓷砖之间的碰撞。 当我在独奏场景中测试它时,它可以正常工作。但是,当我想使用多个场景时,当我想返回场景时会出现错误。
858615124
多次测试后,我在使用setCollisionByProperty时找到了问题,但是我i不了解如何解决
这是代码:
834885247
gamesscene中(在maisonscene中是相同的):
<代码> 176936896staticlayer包含我所有的层
感谢您的帮助 (对不起,我的英语不好,我是法语)
2个回答
谢谢,我发现了我的错误。 就像你说的:错误是我的变量 staticLayer。它需要与场景一起重新启动,因为当场景重新启动时,它会将第一个场景的图层保留在内存中。 所以我将变量放在 create() 中,以便在场景重新启动时使数组为空:
create(){
staticLayer = []
不再有错误!
再次感谢
Gwyn
2022-06-23
我希望它能帮助您找到/调试它 (我的信息太长,无法发表评论) 。
好吧,我在一个小的演示中测试了这个结构,它有效。所以我必须假设, 错误是在那里抛出的,但可能是在其他地方引起的。可能是场景的切换,但没有看到代码,我无法说。这就是为什么我建议不要使用全局变量,而是使用属性来收集图层。
这里有一些你可以做的改动,可能会解决问题:
-
删除此行:
let staticLayer = []
-
设置新属性:
export default class GameScene extends Phaser.Scene{ constructor(){ super({key : "GameScene"}) this.staticLayer = []; } ...
-
将所有
staticLayer
替换为this.staticLayer
:... this.staticLayer.push(carteDuNiveau.createLayer("sol",tileset)); ... staticLayer.forEach((element) => { ... }) ...
如果这没有帮助,您必须检查切换场景的代码。
winner_joiner
2022-06-22