我就直接上图了。上面这两个图是来自官方例子
这是什么原因呢
释放了一个还在用的贴图在 web 端就会这样
那正确是释放姿势应该怎么摆啊?
我用cc.loader.loadRes一个prefab,instantiate后加入场景。当我不用了,正确的移除方式需要怎么做?我用cc.loader.release后发现cc.textureCache里面还是有贴图资源。
介绍看了。我用最新的版本跑最新的官方例子。都报错~所以不知道怎么用了
用的是这个案例。
我们测试例这里写的确实有问题,我会更新一下,应该是下面这样的:
_clearResource: function (url) {
this.content.removeAllChildren(true);
var deps = cc.loader.getDependsRecursively(url);
cc.loader.release(deps);
}
你用 releaseAll 会报错的原因是释放了还需要使用的背景图片
之前测试例用 release(url) 会报错的原因是:在释放 atlas 资源的时候,只是传递了 url,所以被当作了贴图资源,atlas 并没有被释放,导致重新加载从缓存中直接获取添加到场景中,但是贴图已经不在了,所以报错
1赞
貌似是他用了 loadRes 加载过资源,所以自动禁用了某些资源的 auto release。
而 cc.loader.release(array) 时,借用了 auto release 的实现,所以跳过了那些 loadRes 过的资源………… 导致了 release 无效
我跟进去过。
asset数据是有gold.png的。但是跑到
这里来的时候_autoReleaseSetting里面的值=false。所以跳过了释放~
嗯,是这个原因
那用这个官方案例作为例子,用现在的1.4版本要怎么调用接口才能正确释放
这个跟测试例逻辑有关系,测试例是在重新加载前 release,所以即便 setAutoRelease 设置为自动释放,释放成功后又立即会加载一次。cache 中同时存在两个是正常的











