编辑器版本是 2.3.3
遇到的问题是:
在场景的 onload() 方法中 ,去拉取 图集 和 prefab 显示在 ScrollView 中,第一次进入场景列表可以正常显示 。
第二次进入prefab 加载成功,点击事件添加成功,图集资源加载成功,节点的 spriteFrame 正常有内容,
但是全部都不显示图片,有没有知道是因为什么?
以下是 切换场景的警告和拉取资源,释放资源的代码
资源释放是在点击场景关闭按钮的时候做的操作

编辑器版本是 2.3.3
遇到的问题是:
在场景的 onload() 方法中 ,去拉取 图集 和 prefab 显示在 ScrollView 中,第一次进入场景列表可以正常显示 。
第二次进入prefab 加载成功,点击事件添加成功,图集资源加载成功,节点的 spriteFrame 正常有内容,
但是全部都不显示图片,有没有知道是因为什么?
以下是 切换场景的警告和拉取资源,释放资源的代码
资源释放是在点击场景关闭按钮的时候做的操作

点击场景关闭按钮时,场景实际上还没销毁的,该错误一般出现在销毁了正在使用的资源。
解决办法:
1.销毁场景上用到了需释放资源的节点再进行销毁资源(比如 scrollview,未测试,理论可行)
2.完成场景切换后销毁资源(保证切换后的场景没在使用这些资源即可)
0.切换到一个空场景销毁资源
那我具体应该用什么方法监听场景的切换完成呢?
我试过在 cc.director.loadScene()的回调中做处理,但是会报错
也试过 cc.Director.EVENT_AFTER_SCENE_LAUNCH
看起来并没有对我的操作进行处理
你具体是怎么做的?
ReleaseTest.zip (848.8 KB)
这是 2.3.3 做的第二种方法的 Demo,关键代码是奏效的:
this.button.on(cc.Node.EventType.TOUCH_END, () => {
let sp = this.sprite.getComponent(cc.Sprite).spriteFrame; let deps = cc.loader.getDependsRecursively(sp); cc.director.loadScene("B", () => { deps.forEach(res => cc.loader.release(res)); // loader 支持直接传入数组,这是坏示范 });});
报同样的错误就检查一下切换后场景是否还对要释放资源有依赖
建议在切换后的场景里加个按钮,点击之后再调用释放代码,如果还报这个问题,可能还用到了