天天看點

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