求助,微信小游戏分包提示加载成功,但是无法读取分包中的代码

  • Creator 版本: 3.6.2,3.7.3

  • 目标平台:微信开发者工具、真机模拟

  • 报错信息:用creator 3.6.2 打包微信小游戏,包体超过4M所以采用分包处理,但是发现loadSubpackage 后无法加载到子包中的代码,不知道是我操作或者配置有误还是别的原因,感谢各位大佬有知道的教下咯。

做了一个小demo做了尝试,也是报了一样的错误。
demo结构和配置跟原项目类似,其中:

  • res 资源包,里面包含主场景 main_scene,各种 view 的预制体等,配置为普通 bundle
  • scripts 代码包,里面的代码有被 res 中的场景引用,配置为 bundle ,目标平台:微信小游戏,类型:微信子包
  • splash 启动页,含启动场景,没有引用任何非引擎自带代码和资源。作为主包,未配置为bundle

项目结构

各个bundle 的 配置情况

build 配置

子包加载代码

编译后的文件结构和报错信息

求助各位大佬和官方人员~~

微信小游戏代码不支持分包,代码需要都放在主包内

微信自己的文档里面不是说可以的吗?且我在crerator 2.x的项目也是没问题的可以正常这样分的。

hello?有人知道吗?

直接这样加载 assetManager.loadBundle(“subpackages/scripts”)

微信的分包与Creator的Bundle不是相同概念;微信平台代码可以在分包中,但是不能是远端代码;
即:Creator中脚本可以单独放在一个Bundle中,但这个Bundle不能是Remote;

用下面的代码分别加载scripts和res这两个Bundle后,再启动主场景;

cc.assetManager.loadBundle("scripts", null, (err, bundle) => {
    cc.assetManager.loadBundle("res", null, (err, bundle) => {
        // todo: load your game scene
        cc.director.loadScene("main_scene");
    });
});

这里没做异常处理,你需要根据需求做异常处理的逻辑;

虽然我是在看到这个答案前就已经知道是需要这样加载了,但还是感谢你的解答 :laughing:

大佬,能否请教,为什么微信的loadBundle
还要提前设定windows.require(“subpackages/scripts/game.js”)
这句是干啥的啊?

完整代码:
if (!wx.loadSubpackage) {
window.require(“subpackages/scripts/game.js”);
this.loadBundle();
return;
}
注意这个if。这个require 是在 wx.loadSubpackage 的情况下才会执行的。这样写是因为微信小游戏并不是一开始就支持分包加载的,在不支持分包加载的基础库版本下,并不存在wx.loadSubpackage这个函数的,这种情况下微信也不会把分包放远端而是直接在本地的,不过还需要自己require一下,所以就有了这几行代码。

厉害!不过subpackages/scripts/game.js文件也不存在,还要自己写,这个就超纲了嘿嘿

大佬们,请问下有遇到这个问题吗?