请教一下,UILoader.js 中的 releaseNodeRes() 方法,在释放资源的时候,把需要释放的资源存储到了 release_key ,释放完 release_key 不就行了吗,为什么还需要用 release_json 来存储,最后再释放 release_json。。。
三段式释放资源,第一次释放纹理资源, 第二次释放描述纹理的json, 第三次释放描述json的json。
你的帖子已经被社区标记并被临时隐藏。
我觉得吧,不应该让组件直接引用资源,而是让组件引用资源key。加载的时候根据资源key去加载缓存中的资源。另外提供一个资源分组的api。手动释放的时候,不能直接释放资源,而是释放资源组。这样明确了资源加载和释放的分组规则,对用户是友好的;同样也分离了资源和节点之间直接挂钩的关系,我也遇到这个资源和内存管理的问题了,正在看,也不知道这样对不对。关于计数引用,是否需要封装res类和计数引用管理,反正我现在的能力做不到哈,还在继续研究。
var dependAssets = cc.director.getScene().dependAssets; dependAssets报错,不存在这样的方法
cc.director.getScene().dependAssets 如果场景上什么都没有这是一个空数组。 没有你说的报错。 或者就是你自己写错了。
楼主你好,在使用你写的UILoader时遇到一个bug,查了很久认为是你这边实现上有一些问题,目前没有找到比较好的解决办法,提出给你看看你是否有思路解决:
当通过uiloader加载一个prefab后,cocos会自动在cc.loader._cache对象中创建图片纹理的缓存,在使用uiloader.instantiate实例化一个prefab后,会自动对prefab中引用到的纹理资源进行引用计数+1
当通过uiloader.destroy销毁一个节点时,会减少引用计数,如果此时引用计数<=0,则会通过cc.loader.release释放掉纹理。释放后,cc.loader._cache中不再保有这个图片纹理的缓存
但是,但是,此时仅仅释放了纹理texture的资源缓存,并没有释放掉使用这个纹理的精灵帧spriteFrame的缓存。如果此时再次通过cc.loader.instantiate实例化了一个引用了之前释放了的纹理的prefab,cc.loader._cache并不会再次创建图片纹理的缓存!然后uiloader却会尝试去修改引用计数,然后就报错了!
这里我的想法是有没有办法在释放纹理资源的时候同时去释放掉引用到这个纹理的精灵帧。从而确保下一次实例化时,cc.loader._cache重新创建缓存资源的引用
最近我更新以下,是有一点问题。
这个是什么原因
mark…
请问楼主,如果使用creator自带的合图,应该怎么处理?
用2.02版本 creator 运行项目报错 楼主能提供下适配2.02的 demo吗 谢谢楼主分享
已解决
怎么使用这个东西?
插旗先收藏了
你好,想问你这个问题解决了嘛,我最近在滑动列表里加载预制体的时候也遇到了这个问题。期待你的回复哦。
MemoryDetector 这个方法能放出来一下吗?
这个 MemoryDetector 只有 1.9.x 版本以下可以用。