微信小游戏的分包(Laya引擎)

2020-08-15  本文已影响0人  囧得不行

2020年8月15为止,微信小游戏的代码包总大小规定是最大16M,每个包不超过4M。未来随着5G的普及是否会扩大容量不得而知,但是16M一个小游戏基本也够用,再加上云资源的加载,实际游戏体积还能变得更大。

关于分包Laya官方也有文档,文档地址: 官方文档

这是分包后的样子:总大小9M左右,分成了4个包,这样无论是上传还是真机调试都方便了很多。


image.png

准备工作:

更改根目录下的game.json文件,想分几个包你就写几个subpackages,写完你就可以在项目详细里面看到和上图一样的内容了,只不过分包大小都是0KB。

{
  "deviceOrientation": "portrait",
  "showStatusBar": false,
  "networkTimeout": {
    "request": 10000,
    "connectSocket": 10000,
    "uploadFile": 10000,
    "downloadFile": 10000
  },
  "subpackages":[
    {
      "name":"sub1",
      "root":"sub1/"
    },
    {
      "name":"sub2",
      "root":"sub2/"
    },
    {
      "name":"sub3",
      "root":"sub3/"
    }
  ]
}

搬运主代码:

众所周知bundle.js主代码是在根目录js文件夹下的,现在我们在根目录新建一个sub1文件夹,再在里面新建一个js文件夹,把主代码搬到里面去。官方文档里有将超过4M的代码给分割再装包的教程,我没怎么看懂,而且一般我写不出超过4M的代码。

如果你主代码写得不是很大其实也可以不用分包,只要保证每个包不超过4M就可以了。以下所有的分包都遵循这个原则。

image.png

原来的js文件夹下面新建一个main.js文件,用来加载分包。这里的main.js就只是用来加载分包。

mian,js代码内容:

(function () {
    'use strict';
    let wx=window.wx;
    
    wx.loadSubpackage({
    name:'sub1',
    success:function(res){
    console.log("加载分包1成功!");

    },
    fail:function(res){
    console.log("加载分包1失败!")
    }
    })

    wx.loadSubpackage({
        name:'sub2',
        success:function(res){
        console.log("加载分包2成功!");
    
        },
        fail:function(res){
        console.log("加载分包2失败!")
        }
        })

    wx.loadSubpackage({
        name:'sub3',
        success:function(res){
        console.log("加载分包3成功!");
    
        },
        fail:function(res){
        console.log("加载分包3失败!")
        }
        })
    }());

记得修改入口文件index.js里的 loadLib("js/bundle.js");loadLib("js/main.js");

搬运引擎代码:

根目录libs是引擎的源代码,基本会占到2M以上的空间,将这个文件夹分包可以节省一半左右的空间。

依然是再分包1里新建了一个libs文件夹,将代码搬运进去


image.png

因为这是引擎需要的库所以需要引入
game.js:

window.loadLib = require;
require("index.js");

index.js:

/**
 * 设置LayaNative屏幕方向,可设置以下值
 * landscape           横屏
 * portrait            竖屏
 * sensor_landscape    横屏(双方向)
 * sensor_portrait     竖屏(双方向)
 */
window.screenOrientation = "sensor_landscape";
loadLib("libs/laya.core.js")
loadLib("libs/laya.physics.js")
loadLib("libs/laya.html.js")
loadLib("libs/laya.ui.js")
loadLib("libs/laya.ani.js")

loadLib("js/bundle.js");

这里的意思是将原本根目录下的index.js的功能交给了分包里的index.js,所以还要注释掉根目录下index.js的loadLib,你搬运了多少就注释掉多少就行了。

图集的分包:

众所周知根目录下的res文件夹是放laya给我们制作好的图集的地方,同时这个文件夹也是占用空间大户,很多小游戏超出4M都是因为图片太多太大了,因此搬运这个文件夹很有必要。同样也是搬到分包里面,但是还需要更改根目录下的fileconfig.json,不然加载不出来。把原来的res/ 替换成sub1/res/就行了。

image.png

全文完。
这里只介绍了把东西分到sub1这个包里,其他两个包我用来放骨骼动画之类的东西,还要回去改代码里的路径,反正灵活运用吧,不知道你看完有没有看懂,反正我就是因为看不懂别人的才把自己的想法写出来的。。。

上一篇 下一篇

猜你喜欢

热点阅读