-
Creator 版本:2.0.9
-
目标平台: iOS,Android
creator的预制体是放在resources文件夹下的,但是依赖的资源部分在res部分在resources里,我是用getDependsRecursively之后发现如果全部释放会造成再打开的时候报错,因为res里面的无法再被loadres了,使用cc.loader.getRes之后我看到了部分资源的名字,想知道有没有办法在不将全部资源移动到resources和去除重复依赖的情况下,知道getRes返回的资源原本的路径,这样就能区分是否在resources文件夹里面从而针对性的释放了。求大佬解答。
mark,等待可能的解决方案
再接着问,我试着释放了一个资源有res和resources的预制体,再次打开能成功,但是有部分资源在res和resources下的,释放了就不能成功打开,为什么呢?两个预制体都是loadres来加载资源的,释放的时候我对应看了spriteFrame,的确部分在res下
如果非resource目录下的资源,应该属于场景静态资源(我是这么理解的),由引擎管理该资源的生灭,如果非要要释放,也要确定该场景一定不会再次使用的情况下调用接口释放,而场景的静态资源依赖是可以通过场景API获取的,释放预制依赖的时候可以数组去重再释放。如果你非要有这种变态的需求,那么你可以在释放资源的时候使用uuid查询一下该资源的url,cc.loader._resources._pathToUuid里面保存了resources目录下的所有资源,非resources目录下的资源没有path。如果你这种需求比较大,建议你App启动之初先对这个对象进行一次转换 转成uuidToPath
下划线不见了,自己查吧
谢谢大佬,我知道静态资源的释放是要确保以后不再使用的时候释放的,不然会loadres不回来导致贴图错误或者其他报错什么的,但是我这边发现有一个预制体,资源全放在res下的,然后释放的时候也看了释放的对象数组,的确有那些资源,然后释放掉之后发现再次不开不报错,但是有一些释放了再次打开就报错。就很不解
顶一下
再顶下
这个问题我好想也遇到了,我调查了一下发现是我的图集和prefab的名字相同,导致我调用getDependsRecursively,的时候获取的是图片的depends
建议这么调用:
cc.loader.getDependsRecursively(cc.loader.getRes(prefab, cc.Prefab));
这样就不会有问题了
我之前是原生app,默认会先找prefab地址所以一直没问题,后来上小游戏了,突然就不好使了,发现小游戏会优先返回图片资源