正式版是这周发布嘛?
是的 12345
最近遇到了几个经常出现的bug。
第一,Prefab重命名,经常无效,编辑器里显示名字是更改之后的了,可是Finder里还是老的名字,这时我只能重新编辑器,一天要重启好多次。
第二,报错,某一个Prefab打不开了。。
Error: [AssetLibrary] loading JSON or dependencies failed: undefined
我也看不出来哪里错了,目前正在找方法试图解决。
cc.loader.getDependsRecursively释放预制体资源的时候会报警告
“res/import/28/2874f8dd-416c-4440-81b7-555975426e93.json” was released but maybe still referenced by “res/import/6f/6f801092-0c37-4f30-89ef-c8d960825b36.json” (6fgBCSDDdPMInvyNlggls2)
effect 被其它材质复用了,不能完全释放喔,最好手动排除
我这个预制体没有其他依赖,就是几张图片
我这里也出现了,原来在2.0.10,1.9.3 正常的资源释放逻辑,在2.1.2会出问题。
大概原因如下,现在的Sprite都改用了材质。
加载Sprite A,将其依赖引用+1 值为1
SpriteA Destroy, 将期依赖引用-1 值为0
此时对引用为0的依赖 调用 cc.loader.release
此时会警告 例似这样的语句:“res/import/02/0275e94c-56a7-410f-bd1a-fc7483f7d14a.json” was released but maybe still referenced by “res/import/2a/2a296057-247c-4a1c-bbeb-0548b6c98650.json” (2a296057-247c-4a1c-bbeb-0548b6c98650)
去Library查看,发现这个会释放的依赖是 内置材置 的依赖。 内置材质应该是引擎自动加载,存在于内存当中,而开发者的内存管理逻辑没有主动为 引擎自动加载的资源 引用加1.所以造成这个问题。
解决办法:
1.引擎提供 一个接口,开发者可以获取 引擎自动加载资源的所有依赖 开发者内存管理逻辑主动为这些依赖引用+1
2.引擎提供一个接口,开发者去记录依赖时,判断此依赖存在于引擎自动加载的资源当中。 如果是,则不处理
3.引擎 cc.loader.release 自行实现,不对引擎内置资源做处理
感谢大家的热心反馈。2.1.2 正式版已经发布了。由于人力、版本稳定性的限制,很多细节问题无法 100% 跟进,如有需要,大家可以继续发帖反馈,我们会有专人跟进。本帖已经很长,难以跟踪问题,先行关闭。