Cannot read property 'getChildByName' of null

  • Creator 版本:Cocos Creator v2.3.1

  • 目标平台: 开发中 浏览器

  • 首个报错:
    有三个场景 A 、B 、C
    1、从A到B再到C 现在在C场景
    2、从C返回B场景 没问题
    3、从B再返回C场景 就报错了

Cannot read property ‘getChildByName’ of null
错误提示就这

需求:如何做到 从C返回B的时候 就销毁掉C场景
B场景再进入C场景 就跟新进入的效果一样
或者是 C场景 是不会有变动的 返回还跟上一次打开一样

跳场景的时候老场景不是直接就销毁了吗

我原本也是这么想
但是我现在从B再返回C 就是会报错

Cannot read property ‘getChildByName’ of null

这个应该是场景节点什么都没了 所以找不到把

没有遇到过第二次进入场景报错这个情况,是不是你跳出来的时候做了什么操
作,再跳回去就不行了

没有 就正常的 cc.director.loadScene
奇怪的是 我从C返回B 就不会有问题
但是B再返回C 就会报错

Cannot read property ‘getChildByName’ of null, 你的getChildByName是在什么时候调的? 在creator的生命周期里调的? 还是抛事件调的 ?

事件调用的

那就是你切换场景的时候,事件没清除。
从C切回B的时候,这个时候事件单例存在两个监听。

解决方法就是应该你在监听的脚本里面 onDestory里面加个取消事件监听的调用

我这边是没有监听事件的
就比如 进入C场景 为C场景某个按钮判断是否要显示 都是类型这些

我这边看断点 第一次进来 this.node 是有的 如果返回B 再返回C 这个 this.node 就是 null 了

问题描述不清不楚怎么解决…
不过你这种情况多半是监听事件的问题…

这个C场景倒是用到了 socket.io
但是我 在 返回 B场景的 时候 有断开 重新进才又连接
socket.io 算是有监听的吗
除了这个 没有别的监听事件

大佬,求助 还是解决不了
为何切换掉场景 再打开 不把它当成 是打开新场景 重新来一遍

现在这个页面 应该还是因为有 socket.io 的原因
但是我切换出这个场景的时候还是有 断开 重新进来的时候才又连接了
其它的 都没监听事件的需求

我调试过 场景出去后再进来 到达需要 选择 this.node.getChildByName(obj) 的时候就会有
Cannot read property ‘getChildByName’ of null
控制台 一看 this.node 已经是 null 了 所以才选择不到

还是说这个场景就应该弄成 常驻节点

感觉就是事件监听的锅:joy:
你从this.node.getChildByName(obj)往回查~

1赞

我当前也遇到了这个问题,确实是事件监听的锅 :sweat_smile: