我有两个fbx
FBX1:大小32M左右,贴图17M,是一个古城的几个建筑.导出成bundle后,文件占用空间为68M,大小54.9M,文件数量5000个+
FBX2:大小86.5M,贴图17.9M,是一个古代场景,导出成bundle后,文件占用160M+,文件数量5000个+
这导致了两个问题:
1.小程序内最大支持200M缓存,一下就占满了
2.文件数量太多,下载需要耗费大量时间
针对以上问题,带来的解决方案:
将bundle压缩成zip.
但是这又带来另一个问题:
cacheManager无法正确识别bundle解压后的大小,无法清理出正确的空间以供文件的解压,例如:
条件: bundle的zip大小 < 微信小游戏剩余缓存空间 < bundle解压后的大小
在这个情况时,cacheManager的缓存清理策略失效,并且微信会报解压失败.
综上所述,当前我的临时解决方案
方案alpha:
1.生成压缩bundle
2.在游戏启动时,调用assetManager.cacheManager.clearCache()
方案beta较为复杂,在下面详细列出:
1.生成压缩bundle
2.将bundle的实际大小填入自我管理的一个配置中
3.下载bundle时,根据配置清理缓存目录,而不是通过本身的资源管理
方案gamma:
自我生成适合微信小游戏的three.js加载3d场景,与游戏场景协作
但是这又涉及到相机渲染等底层逻辑,暂时只是个想法
具体诉求:
1.复杂的fbx在bundle后为什么会增大,并且文件量会增多?如果我使用微信小游戏,能否直接使用fbx文件本身,而不拆分?官方能否优化?
2.当bundle是zip时,解压失败的问题解决
我已经通过自己的力量尽量去查找询问他人,我也尝试将fbx转换成gltf格式,但是都无济于事.请求有没有相应的解决方案.