子游戏回到大厅,大厅场景加载失败,请问有人遇到过吗

creator 2.0.10

按照论坛的大厅子游戏创建方法,能成功启动大厅,点击大厅列表下载并且进入子游戏,但是子游戏返回大厅之后,
大厅就只显示了界面,里面的按钮,动画失效,点击按钮报错

现在的情况就是,显示出了大厅,就一个界面,点击按钮的话 报错

JS: [ERROR]: Error 3804, please go to https://github.com/cocos-creator/engine/blob/master/EngineErrorMap.md#3804 to see details.

查询是脚本找不到,不知道是哪儿有问题,脚本没有加载进去

请问有朋友遇到过吗?这是我的dating.jsdating.js.zip (2.1 KB)

1赞

你得进入子游戏的时候把 大厅的 settings保存下来,然后子游戏返回大厅在初始化一下大厅的配置 cc.AssetLibrary.init({
libraryPath: ‘res/import’,
rawAssetsBase: ‘res/raw-’,
rawAssets: settings.rawAssets,
packedAssets: settings.packedAssets,
md5AssetsMap: settings.md5AssetsMap
});

大厅的setting,在dating.js这个里面,重新去获取了,这样也不行吗??require(cc.INGAME+‘src/settings.js’);

初始化cc.AssetLibrary.init这段代码加了的,根据工程main.js调整了位置,setting打印出来看,确实是大厅的setting文件呢?

不用 没啥意义,在获取的时候 实际上 settings 已经在缓存里了,直接定义一个全局的变量来保存这个就行了

先切换到大厅的场景,然后延迟1帧调require大厅的那个 js,js里面就是重新给大厅的 cc.AssetLibray重新赋值初始化

你好,我只能通过 在子游戏这么写,
//返回大厅
if(CC_JSB){
cc.INGAME = (jsb.fileUtils ? jsb.fileUtils.getWritablePath() : ‘/’) + “UnicornFoodHall/icecream”;
console.log(cc.INGAME);
window.require(cc.INGAME+"/src/dating.js");

}

这个代码就会调用dating.js,然后显示出大厅界面
那么我延迟一帧,还要再调用一次dating.js,重新给大厅的 cc.AssetLibray赋值初始值吗?

我们项目没有调用大厅的 main.js,而是在子游戏的目录下面有两个main.js(文件名不一样),一个是子游戏的,一个是重新初始化 cc.Asset的,其他什么多余代码都没有,初始化 asset的那个是在切换大厅场景成功后 require的

那你们是怎么去切换大厅场景的呀

整了一下午

最后解决了 这个报错的原因是没有及时把project.js加载
修改了dating.js
添加了一句require(cc.INGAME + ‘src/project.js’);

成功解决

多谢你的回答,是其他的问题 我已经解决了 多谢

忘记了 :grin:我们是又重新 require 大厅的 src/project.js 的,当时做的时候没有参考cocos论坛里的这个 方式

具体原理都是一样的:grin:

是的 我当时少了这句话 后面加上就可以了

请问一下,我的dating.js总是获取到的是子游戏的settings.js,这是为什么呢,路径不对么