Laya页面嵌套和Scene.destory导致的Bug

在Laya2.1.1.1版本中,使用页面嵌套和runtime时,与Laya.Scene.open和Laya.Scene.destroy操作存在冲突,可能导致错误。当在主页HomeScene嵌套多个相同UI页面TestUI,并先后调用Laya.Scene.open和Laya.Scene.destroy时,由于destroy过程中对unDestroyedScenes列表的处理不当,导致尝试访问不存在的scene,从而出现错误。解决方案是在Scene.destroy方法内增加对null scene的判断处理。
摘要由CSDN通过智能技术生成

Laya2.1.1.1

参考:

预设使用

 

Laya给出了相同模块,逻辑代码也相同情况下,使用页面嵌+runtime的使用方案。但是该方案和Laya.Scene.open,Laya.Scene.destroy等有冲突,会导致bug。

 

 

 

当参考使用Laya的教程,拖入一个scene到另一个scene中使用。

假设当前页面是主页HomeScene.scene, 主页里嵌套了10个其他的UI也是TestUI.scene的页面。

 在使用Laya.Scene.open(HomeScene)后,再使用Laya.Scene.destroy(HomeScene),会报错scene.url的call是undefined

 

 

 

找到销毁源码处。发现在Laya.Scene.destroy中销毁时,调用了scene.destroy,然后scene.destroy中改变了unDestroyedScenes列表长度....

假设列表原长度是10,第一个scene.destroy执行时,列表长度变成了9,然后Laya.Scene.destroy仍然会去找第10个sce

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值