场景自动释放无效问题

  • Creator 版本: 2.4.3

  • 目标平台: 微信小游戏开发工具 真机

  • 重现方式: 勾选场景的自动资源后打印前后缓存即可复现

a40dcde879039759f203fced86e0505
我自己建了一个小场景用于测试,里面只有一个背景节点和一个切换场景按钮,背景节点的spriteFrame挂的资源跟场景文件一起打在一个assetBundle中 类型为小游戏分包,同时首场景分包。测试流程如下:进入首场景,首场景放置按钮入口,点击按钮时加载assetBundle与小场景并进入小场景,点击小场景中放置的切换场景按钮再重回首场景时,将其前后缓存信息打印验证资源是否释放。

第一个情况是将小场景(Copy-scene)设为自动释放:
5a1ebc30412b3a594c3f4a893e5b888
可以看到从小场景切换到首场景时缓存资源数都是46,说明没有自动释放。并且其资源没有在首场景被引用,符合自动释放的释放检查条件。
第二个情况是自己在切换时手动releaseAll释放:
c4420683120a10c0d21f5b0446949c8
可以看到从小场景切换到首场景时缓存资源数从46减少回44,说明资源释放成功。

想问一下,为什么自动释放没用呢,我专门建了测试场景和测试bundle,测试bundle的资源完全跟首场景分包没关系。

简单测试,没有复现缓存没变的情况,看看是不是我漏了什么?
demo:
NewProject.zip (288.0 KB)

子包没有设置成微信小游戏分包,并且构建发布的平台是webMobile不是微信。把这些设置完了再试试?

设置的就是微信小游戏分包,你平台选择微信就能看到。

问题找到了,之前因为测试的时候多拷贝了一个测试场景,这个多出来的场景被打进主包了,导致后面计算的时候多了这份,自动释放本身可执行。今天删除了场景之后ok的,感谢

我又想了一下,之前手动释放的时候也有多的那份场景,但是没被算进来,所以不是这个的原因。对比了一下跟你的代码,发现你打印缓存的时候是隔了三秒打一次,所以从测试场景切换到开始场景的三秒以后,才打印的缓存信息。而我之前代码是start中直接打印,没有定时,我对比了这里,发现直接打印的时候缓存没有变化,因此我认为这里的原因是因为 自动释放资源 对比 手动释放 资源有一定的延时性 而不是没有效果。

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。