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 是微信的啓動文件,上圖,第一步啓動白鷺,第二步加載分包,第三步分包加載完成;
官方提供的
https://blog-static.cnblogs.com/files/mqflive81/EgretSubPackageLoading.js
官網的內容介紹完了,但是還有容易出錯的地方;
上面我們一直在做分包的配置,不看官網 的項目一定會懵逼的,上面的stage1,就是在微信項目裏新建一個stage1文件夾,把這個stage1作爲分包,給分出去
這個stage1裏面可以放你的資源
假設我當前的資源很多,就可以吧資源分成兩份,一份還是放在resource裏面,另一份就可以放在stage1裏面,
分好不算好,還要看一下代碼中加載的路徑,這裏我是踩過坑的,注意;
因爲我是把defaultex管理的資源打算全部放在stage1,作爲分包的,所以一開始沒注意用的是第一個,報錯找不到資源,我就想到是因爲這個原因
那個文件夾作爲分包,就把對應的想分出去的資源放進去。