Prefab加载和空间占用问题的最简单方案,希望官方支持

先说下项目情况,我们做消除游戏,上微信和fb instant game,项目复杂程度类似开心消消乐,大量界面和预置prefab,代码量比较大系统也很多。之前是比较成熟的unity项目,持续开发了几年,现在移植到cc,cc这边还算新手。
最近进入了出包阶段,发现最大问题是prefab的加载。
现在的版本大概只放了unity版本1/3的系统,已经遇到了瓶颈。

微信版本问题是空间占用大,json文件2.2M,微信主包上限4M,意味着接下来几乎已经没法新增系统。
fb版本第一次进游戏json解析超慢,95%的装载时间在等json解析。

我看了下prefab文件,觉得有个简单的优化办法,比如我一个节点信息是这样
{
type”: “cc.Node”,
“_name”: “UIStageInfo”,
“_objFlags”: 0,
“_parent”: null,
“_children”: [
{
id”: 2
}
],
“_active”: true,
“_level”: 1,
“_components”: [],
“_prefab”: {
id”: 5
},
“_opacity”: 255,
“_color”: {
type”: “cc.Color”,
“r”: 255,
“g”: 255,
“b”: 255,
“a”: 255
},
“_contentSize”: {
type”: “cc.Size”,
“width”: 0,
“height”: 0
},
“_anchorPoint”: {
type”: “cc.Vec2”,
“x”: 0.5,
“y”: 0.5
},
“_position”: {
type”: “cc.Vec3”,
“x”: 0,
“y”: 0,
“z”: 0
},
“_scale”: {
type”: “cc.Vec3”,
“x”: 1,
“y”: 1,
“z”: 1
},
“_rotationX”: 0,
“_rotationY”: 0,
“_quat”: {
type”: “cc.Quat”,
“x”: 0,
“y”: 0,
“z”: 0,
“w”: 1
},
“_skewX”: 0,
“_skewY”: 0,
“_zIndex”: 0,
“groupIndex”: 0,
“_id”: “”
},

里面大部分属性存储内容是属性的默认值。
像这样手动删掉这部分属性值,完全不影响使用和加载。可以大幅减少json的空间占用和解析速度。
type”: “cc.Prefab”,
“_name”: “”,
“_objFlags”: 0,
“_native”: “”,
“data”: {
id”: 1
},
“optimizationPolicy”: 0,
“asyncLoadAssets”: false
},
{
type”: “cc.Node”,
“_name”: “UIStageInfo”,
“_objFlags”: 0,
“_parent”: null,
“_children”: [
{
id”: 2
}
],
“_active”: true,
“_level”: 1,
“_components”: [],
“_prefab”: {
id”: 5
},
“_id”: “”
},

我们接下来采用的方法是安排个专人来删除这部分内容,或者自己写工具来处理。
不知道引擎层面是否有办法自动实现?
如果没有,希望官方考虑在下个版本呢里增加这个优化。
我相信只要开发规模稍大的项目,都会遇到prefab的问题,论坛里讨论得很多都没看到好的解决方案。
目前prefab90%的内容存的是默认值,只要不再储存默认值,prefab的空间和加载速度都可以大幅提升。

支持一下

这不是最终结果,请查看构建后输出的文件,而不是开发中的版本。

确实是我疏忽了,之前看过导出的json看到了一些scale 1,1,1的存储,以为没有做这方面优化。
我又看了一遍,导出的json里面只有scale和color有一些看起来是默认值的信息,引擎已经优化过了。

请问facebook首次启动加载prefab的json卡顿问题有什么解决方案么?微信里如果用远程加载就有类似卡顿,如果放主包里就不卡顿。

这个通常是网络引起的