【内存优化】如何释放直接拖到场景里的prefab资源

1、请问如何释放直接拖到场景里的prefab资源?
2、cc.url.raw(“resources/sounds/” + url) 通过url播放的音频资源如何释放?
3、游戏运行内存越来越高,感觉是资源都没释放,目前工程是全部把prefab拖到场景里,也没用使用过 cc.loader.loadRes等动态加载API,那么切换场景的时候如何能有效释放上个场景的资源呢?

另外如果通过release释放直接拖到场景里的prefab,是需要release场景里的这个node节点还是relese resource下该prefab里路径url?

大神快快来

你可以试试勾选 场景 释放,看看有没有释放,
如果没有,再试试这个
var deps = cc.loader.getDependsRecursively(prefabOrPath);
cc.loader.release(deps);

这种功能竟然是要“试试这个行不行”,不行再”试试另外一个“;已逆天

也只能这样了,关于内存释放这块文档一直说的很模糊

拖到场景里后,场景加载后这个节点和普通节点没区别,没办法单独释放一个节点下的用到的资源。

静态场景使用自动释放就可以了。动态的资源变化可以用 cc.loader.setAutoRelease 之类的 API 来补充声明下。

1赞

cc.url.raw(“resources/sounds/” + url) 通过url播放的音频资源如何释放?
那这种方式播放的音效如何释放呢,播放完毕后是自动释放的还是需要手动释放?如果需要手动释放应该如何释放?

另外我发现勾选了场景的自动释放资源后,切换场景的时候会比不勾选自动释放资源慢2-3秒中,web和原声平台都比较明显?这个有没有方案可以解决?如果不勾选这个选项那么如何手动释放场景里的资源呢?

手动释放的方式是 cc.loader.release(cc.url.raw(“resources/sounds/” + url));
不知道能不能自动释放,帮 @visualsj

你场景很大吧?这个没办法

场景也不是很大,也就不到10个界面,这种直接拖到场景里的资源有办法手动释放吗?

没办法,你想要手动释放就不应该放在场景里

动态创建prefab不是很耗性能吗?也试过动态创建,切换场景后从创建到显示明显要比直接拖到场景里要慢2-3秒,这种体验太差了,有没有什么好点的方法?目前能想到加个过渡场景,或者预加载场景,但是也比较慢

cc.instantiate(prefab) 已经非常优化了,你用其它技术手段都未比能有它快
如果你还是会卡 2 - 3 秒,说明场景太大了,只能自己在内容上权衡了。

想问一下,现在的版本还是这样吗?

我的项目也是制作Prefab,通过脚本拖进去场景。然后触发动作 由cc.instantiate生成,执行完毕后再 destroy 销毁。这样节点里面用过的资源会依然残留吗?
那我再次触发这个动作,再instantiate一次呢?内存会不会越来越高?

我也是这样做的,但是我的场景是由很多个prefab组成的,显示到某一界面再判断是否需要通过cc.instantiate创建节点,从创建节点到显示的速度很快啊

一样,不会有残留。

希望官方出一期load release loadingscene用法说明直播。

3赞

恩,谢谢解答。

只是我这边一个界面挂了7、8个预制的弹出窗口,当从其他界面切换到这个界面的时候就要等几分钟加载。
看来得优化下引用的资源了:joy::joy: