那是每个场景名字一样:
director.loadScene(‘a/scene’);//总感觉这么切换有时候不灵的样子
还是每个场景名字不能一样:
director.loadScene(‘a’);
那是每个场景名字一样:
director.loadScene(‘a/scene’);//总感觉这么切换有时候不灵的样子
还是每个场景名字不能一样:
director.loadScene(‘a’);
你要先loadbundle,再执行你的a/scene,,
有时候灵是因为你加载过某些bundleA的资源,这个bundle被加载过了
不灵就是bundle没被加载过直接loadScene了
话说director.loadScene(‘a/scene’);这么写它会自己去找a包里面的scene场景吗
用bundle.loadScene
assetManager.getBundle(‘a’).loadScene(‘scene’);//不能用。
director.loadScene(‘a/scene’);//反而能用
getBundle(‘a’)里面是有的
我也测试下了,确实不行
所以多包多场景的时候想场景名字还一样,该怎么处理比较合适
我不知道你具體用哪個版本
但是根據文檔
https://docs.cocos.com/creator/3.7/manual/zh/asset/bundle.html
Asset Bundle 提供了 loadScene 方法用于加载指定 bundle 中的场景,你只需要传入 场景名 即可。
loadScene 与 director.loadScene 不同的地方在于 loadScene 只会加载指定 bundle 中的场景,而不会运行场景,你还需要使用 director.runScene 来运行场景。
typescript
bundle.loadScene('test', function (err, scene) {
director.runScene(scene);
});
是需要用bundle loadscene之後 還要去runscene
他不是有个同名的前提条件吗?
确保已加载的分包里面 场景名唯一就行了吧。把之前的场景,所在的分包释放掉不就好了。要是确实同时存在,建议改场景名称,要么就是设计的不合理。而且真出现这种情况,引擎报不报错都还不知道呢。
或者手动bundle.loadScene后runSceneImmediate。源码都帖了没看?
director.loadScene(‘a/scene’);director.loadScene(‘b/scene’);之前用着这种方式,仿佛它会自动找包加载底下的scene,也没错过,最近总觉得代码没问题但没执行到它一样,就来问问这么写合适吗
cc.assetManager.getBundle(“a”).loadScene(‘scene’, function (err, scene) {
cc.director.runScene(scene);
});
这样写长了些,但会合理些吧,至少bug的时候不会觉得它的问题
当然这个合理啊,如果觉得太长,就封装下

回答问题前,先冷静下,改需求去满足别人的问题是很简单的,但能不能改,改了的工作量是不是更大,这才是更要考虑的。
改个场景名工作量很大是吧?
多个分包同时在内存里面 还每个分包有个相同的场景名,这设计合理是吧?你要是觉得合理,那当我没说。每个分包都有个MainScene 而且还同时会切来切去是吧,神仙设计。
也许都MainScene,毕竟3.x可以不同目录同脚本名了,那场景名也一样不也还行
同场景名一定是类似场景,这种场景之间跳转统一由控制器管理,退出场景就释放分包,同场景名所在分包只会维持一份。业务场景不存在这种冲突bug。当然也做了bundle.loadScene的兼容,更多是直接director.loadScene