天天看点

3D游戏3D素材资源zip压缩解决方案

3D游戏3D素材资源zip压缩解决方案

近期使用Laya开发了个3D游戏,遇到了这样的问题,3D素材资源加载很慢。前端工程师都知道,影响网络加载速度的因素除了下载文件体积之外还有一个就是http请求过多。

3D资源恰恰是一大堆零散的小文件,如果是2d项目呢,可以通过把图片合集的方式减少图片请求,但3d包含多种不同格式的文件,不能合成。那怎么办? 想到了zip压缩包的方式,把3d素材文件打包成1个或多个zip包。

zip包的解压在纯h5项目需要借助第三方类库来实现,并不方便。可喜的是微信小游戏基础库提供了解压api,这样大大简化了开发难度和保证了兼容性、稳定性。

点击这里查看upzip 微信api地址

思路很简单:

判断游戏本地临时文件夹是否存着3d素材文件,如果有,直接返回,如果没有,先进行下载,待下载完解压成功后返回。需要做好兼容,zip下载或解压出现问题时需要加载零散的原始文件。

核心伪代码:
/**
  * 
  * @param url 压缩包zip路径
  * @param callBack 回调函数,失败返回-1
  * @param checkurl 本地文件路径,判断是否存在
  */
 public static downWXFile(url:string, callBack:Function,  checkurl:string){
     let log = false