creator 2.4.10 分包设置后导致cc.director.preloadScene报错

  • Creator 版本: 2.4.10

  • 目标平台: Chrome

  • 重现方式:将场景所在目录设置成分包

  • 首个报错:loadScene: Can not load the scene because it was not in the build settings before playing.

  • 之前哪个版本是正常的:

  • 手机型号:

  • 手机浏览器:

  • 编辑器操作系统:

  • 重现概率: 100%

it was not in the build settings before playing.

目录不配置Bundle是正常,配置后才会报错

看起来是逻辑加载错误

CCDebug.js:251 loadScene: Can not load the scene ‘Hall’ because it was not in the build settings before playing.
101.cc.errorID @ CCDebug.js:251
preloadScene @ CCDirector.js:585
Util.preloadScene @ assets\framework\scripts\utils\Util.js:34
loadHall @ assets\framework\scripts\view\loading\Login.js:449
necessaryCfgLoadFinish @ assets\framework\scripts\view\loading\Login.js:293
onEnd @ assets\framework\scripts\utils\EventCustom.js:232
285.proto.emit @ callbacks-invoker.js:341
219.proto.dispatchEvent @ event-target.js:215
EventCustom.emit @ assets\framework\scripts\utils\EventCustom.js:273
_responseMatchRewardCfg @ assets\component\Match\res\need\MatchLogic.js:107
LogicBasePrototype.onSrvMsg @ assets\framework\scripts\logic\Logic.js:94
ServerBasePrototype.msgDispatcher @ assets\framework\scripts\model\net\NetServerBase.js:418
ServerBasePrototype.dataParser @ assets\framework\scripts\model\net\NetServerBase.js:253
ServerBasePrototype.updateRecvQueue @ assets\framework\scripts\model\net\NetServerBase.js:334
ServerBasePrototype.eventParser @ assets\framework\scripts\model\net\NetServerBase.js:230
eval @ assets\framework\scripts\model\net\NetServerBase.js:35
NetSocketPrototype._event @ assets\framework\scripts\model\net\NetDefenseSocket.js:239
NetSocketPrototype._onmessage @ assets\framework\scripts\model\net\NetDefenseSocket.js:249
SocketDefensePrototype.ConnectHander @ assets\framework\scripts\model\net\NetDefenseSocket.js:312
NetConnectPrototype._event @ assets\framework\scripts\model\net\NetConnect.js:86
eval @ assets\framework\scripts\model\net\NetConnect.js:102

Util.preloadScene = function (name, func) {

    if (typeof func === "undefined" || func === null) {

        func = function () {};

    }

    cc.director.preloadScene(name, func);

};

需要先加载场景的Bundle吧,加载bundle后再preload场景

1赞

本地运行也要?

Util.preloadScene = function (name, func) {

    if (typeof func === "undefined" || func === null) {

        func = function () {};

    }

    cc.assetManager.loadBundle(name,function(){

        cc.director.preloadScene(name, func);

    })

};

是的,先加载bundle,再preload场景。