合并json问题

打包选择合并所有json可以很好的解决请求多的问题,但是如果我释放一个动态加载的prefab,则会释放它所在的合并的大json,再次加载prefab就会从新请求这个很大的json

1赞

请问楼主有解决方案吗

你这还是好的,一旦json足够多,ios就会卡顿。。

没好的办法,只能细分bundle了。creator做大项目确实性能是个问题

这个在实现层面就有问题了。
合并 json 后,释放 prefab,却把 prefab 所在的 json 也释放了,是有问题的。
合并的 json 对象,应该有一个单独的引用计算来管理。
方案问题。

合并json释放资源需要重新加载bundle的,可以这样修改试试

1,加载后,files不要移除单个资源

2,单个资源处理解析时,克隆一个对象返回,不修改原bundle存储的结构

确实是这种管理方式吗?如果释放了合并的大json 那么这个大json里的其他json,被其他资源用到的怎么办? 不就出错了吗

bundle合并json,加载bundle后会对每个小json文件缓存到files的cache中,当用到这个资源时,会从files里面移除掉并解析成对应的cc结构类型,bundle中的其他小json还在files中

当这个资源被释放后,重新调用时,发现files的cache中找不到这个json文件,又会重新去加载bundle合并的json

bundle合并json时,微信小游戏ios发热应该也和这个有关,昨天测试了一个bundle合并后800k的json,释放其中的一个资源(点击特效,播完释放,点击创建特效),再重新加载,测试10分钟有明显的发热

顺序上应该是这样吧,比如把bundle合并的json 叫大json,你们包含了很多小json,你释放了其中某个小json ,其他的小json不被释放,然后你再加载某个资源 用到了被释放的那个小json,那么就算是重新加载大json,那么其实里面其他的小json都是有缓存的 不用被加载的,那么这个过程 和单独加载一次小json 有多大区别? 这个估计只能官方来确定,我认为很难说是再次加载大json的问题导致的

两个点
1,释放的资源是cc类型的资源,不是files的cache缓存的小文件,files中的小文件在转cc类型资源已经移除了,bundle中其他json是在files的cache中
2,重新下载大json,这是一整个json文件,所有的内容都会下载,只不过会重新把files的cache重新更新下

源码在这块


可以build一个web出来,设置bundle合并json,释放其中的一个资源在加载这个资源

1 没有问题,
2 重新下载大json? 确实是下载吗 还是加载?下载只下载一次的,本地有缓存了,下载再加载不用下了就,所以重点应该是 重新加载大json 的负载 但里面的小json 绝大部分已经有缓存的情况下 这个负载 到底有大的影响才对吧?

大json完整的解析了一遍

这是2.x版本的代码吗?
看到您这里深复制的是解析后的的数据,当那个解析后的数据有精灵帧,这个也能复制而不被销毁吗

2.x的版本,复制的源数据,不是cocos资源对象