Egret 小遊戲分包

 

Egret 小遊戲分包

 

分包加載包大小的限制

目前微信小遊戲分包大小有以下限制:

  • 整個小遊戲所有分包大小不超過 20M
  • 單個分包不限制大小,主包不超過 4M

一般遊戲稍微有點兒功能就突破4M,開發期間就要考慮資源的處理:

經驗總結:

  (大項目: size > 50):

    一般打包成App資源,可以一次性加載;原生大小沒有限制的話,這樣最簡單,不用考慮太多。

    如果打包成小程序,就要考慮分場景加載了,遊戲內的公共資源整理到一塊,和遊戲最初場景資源最先加載。保證玩家先進入遊戲,隨後打開其他界面,判斷當前的資源是否加載到了,如若沒有就加載,用到哪個就加載哪個(前提是在default.res.json分好組),加載的時候最好做一個加載頁。當然資源肯定要放在服務器上遠程加載。

  (小項目)

    很小的項目,總包沒到4M,那不用考慮,這裏介紹大於4M

    •  資源放到服務器上,遠程方式加載資源;
    •  不想放,或者獨立開發沒有服務器,要保證總包小於20M,可以採用分包的方式;     

 

egret分包準備工作

步驟一:下載示例項目

egret官網有對應的介紹:傳送門

下載示例項目: https://github.com/himuil/subPackageDemo

步驟二:將該項目移植進您的遊戲

  • 將 scripts/wxgame/subpackage.ts 拷貝進您的項目
  • 修改 config.wxgame.ts,將 ManifestPlugin 替換爲 SubPackagePlugin (注意,您需要修改 build 和 publish)
    • 看清楚是config.wxgame.ts這個文件,把第一步的subpackage.ts引入文件中。

          

    build 下的new ManifestPlugin替換成SubPackagePlugin ,SubPackagePlugin 的格式按照第二張圖片,換成第三張圖

           

    同理 publish 同上;參考官網項目,需要注意的一點  “includes” 是main.min.js,min表示正式版(壓縮了);

  • 修改 config.wxgame.ts 中的 CleanPlugin,將 subpackage 對應的目錄清除 ,將egret-library替換成stage1;就是分包的文件夾

 

          

  • 將示例項目的 EgretSubpackageLoading.js 拷貝進您的微信小遊戲項目(打包後的項目)

 

         

 

  • 修改微信小遊戲項目的 game.json,參考示例項目,引入 subpackages 屬性 

         

 

  • 修改微信小遊戲項目的 game.js,參考示例項目,重點是添加調用 wx.loadSubPackage 的邏輯

        

 

 

 game.js 是微信的啓動文件,上圖,第一步啓動白鷺,第二步加載分包,第三步分包加載完成;

官方提供的

EgretSubPackageLoading文件,是一個黑屏,加一些進度文字。效果不是很好,可以更改一下,放一張圖片上去,完美解決加載分包黑屏問題,
   
如下地址:打開後複製到EgretSubPackageLoading中;

  https://blog-static.cnblogs.com/files/mqflive81/EgretSubPackageLoading.js

官網的內容介紹完了,但是還有容易出錯的地方;

上面我們一直在做分包的配置,不看官網 的項目一定會懵逼的,上面的stage1,就是在微信項目裏新建一個stage1文件夾,把這個stage1作爲分包,給分出去

這個stage1裏面可以放你的資源

假設我當前的資源很多,就可以吧資源分成兩份,一份還是放在resource裏面,另一份就可以放在stage1裏面,

分好不算好,還要看一下代碼中加載的路徑,這裏我是踩過坑的,注意;

 

 

 

因爲我是把defaultex管理的資源打算全部放在stage1,作爲分包的,所以一開始沒注意用的是第一個,報錯找不到資源,我就想到是因爲這個原因

那個文件夾作爲分包,就把對應的想分出去的資源放進去。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章