如题
新建2个场景,Scene_1,Scene_2,
Scene_1启动时执行:
cc.game.addPersistRootNode(this.node);
cc.director.loadScene(“Scene_2”,this.onSceneLoaded());
onSceneLoaded(){
let sceneName = cc.director.getScene().name;
console.log(sceneName);
},
这时打印出来的sceneName仍然是 Scene_1,
但是,把加载场景代码独立到另一个类并挂载组件,由其他类调用时,
就不会出错,如下:
var curLoadSceneName; var thisPrototype;
cc.Class({ extends: cc.Component,
properties: {
},
onLoad() { thisPrototype = this; },
//加载场景 loadScene(sceneName) { //cc.log("sm收到的场景名:"+sceneName); curLoadSceneName = sceneName; cc.director.preloadScene(sceneName,this.onSceneLoaded); },
//加载场景完成 onSceneLoaded() { cc.director.loadScene(curLoadSceneName,thisPrototype.onSceneLoaded_SceneManager); },
//自己监听加载完毕事件,把事件抛出 onSceneLoaded_SceneManager() { thisPrototype.node.dispatchEvent(new cc.Event.EventCustom('CMD_SceneWasLoaded', true)); } });
这时他爹调用loadScene(“Scene_2”);
并监听“CMD_SceneWasLoaded”
打印:cc.director.getScene().name;
得到的就是Scene_2
我也不知道为啥。