Window.Global里面存的node 为啥在切换scene后properties里面值被清空了?

//定义
var OManager = cc.Class({
extends: cc.Component,
properties: {
listener: null
},

// use this for initialization
onLoad: function () {
    this.listener = new Map();
    Global.oManager = this;
    
},

registListener: function (name, listener) {
this.listener.put(name, listener);
},
});

//全局
window.Global = {
oManager: null,
};

在initscene中加载了这个OManager脚本,然后initscene 切换场景到mainscene
mainscene中调用
Global.oManager.registListener(“MainScene”,function(event,data){});
调用是成功的,但是registListener中this.listener 为null了,请问为什么?需要把变量拿到外面做全局变量才行吗?

试过放到外面var listener,过来的时候listener是不存在的。。。那这个window.Global到底存了啥

组件和节点如果要跨场景访问,需要调用 cc.game.addPersistRootNode 这个 API 来防止切换场景时销毁。

加了也一样,实际跨场景后还是为null了

知道了。。
看到别人也有这个问题,解决是
cc.game.addPersistRootNode(this.node);的前提是这个节点(this.node)在层级结构和canvas平级

1赞