Creator 纹理资源释放不了,姿势不对?

通过cc.loader.loadRes加载了一个prefab,在后面调用cc.loader.releaseRes进行释放,然后调用getCachedTextureInfo打印log,发现prefab用到的相关纹理资源并没有被释放。

动态加载的单张纹理,通过cc.loader.releaseAsset也释放不成功。

通过removeUnusedTextures也没法释放,说明纹理还有被引用,实例化节点已经destroy,而且没有地方用到这个prefab了,那纹理在哪些地方还有引用,难道是js没有实时gc导致纹理引用计数器不为1?

求指点啊~~,这个动态加载资源要用什么姿势释放

看了其他人的帖子之后 ,再看了一下代码 测试,,,要这样 ,,releaseRes没用 要getDependencies 然后逐个release ,然后再调用 gc 然后再调用 removeUnUsedSpriteFrames 最后 才是 removeUnusedTextures

过程很复杂 我认为这种 引擎本身对内存这方面管理 设计 的不好 或者说还没有设计方案

期待官方完善

我们推荐的方式是这样的:

var deps = cc.loader.getDependsRecursively(prefab);
cc.loader.release(deps);

在 web 端是 ok 的。
我大概理解你们遇到的问题,应该是原生层面的引用还没有完全被释放,这个我们会完善一下

loader.release 不应该直接去release Texutre,这样很霸道,基本上是不敢用的

建议增加一个接口 loader…UnloadUnusedAssets ,对每个asset做引用计数,这样就可以一口气直接释放所有某个过程中创建的所有prefab

http://www.ceeger.com/forum/read.php?tid=4394