-
Creator 版本:
-
目标平台:
-
详细报错信息,包含调用堆栈:
-
重现方式:
-
之前哪个版本是正常的 :
-
手机型号 :
-
手机浏览器 :
-
编辑器操作系统 :
-
编辑器之前是否有其它报错 :
-
出现概率:
-
额外线索:
Creator 版本:
目标平台:
详细报错信息,包含调用堆栈:
重现方式:
之前哪个版本是正常的 :
手机型号 :
手机浏览器 :
编辑器操作系统 :
编辑器之前是否有其它报错 :
出现概率:
额外线索:
他们之间没有什么联系。start属于组件的 自动生命周期。而preload, onLoad, onEnable归属于nodeActivator控制,不是组件的自动生命周期。至于onLoad和start之间会发生什么,取决于它的节点被激活的代码所执行之处。
第一次发,不熟悉,问题是下面这样:
1 我在加载场景后的onload方法里,获取节点上绑定的script,都有值
2 在我退出场景后,再加载场景完毕的onload方法中,打印该值存在,
在一个public方法中调用,却提示不存在
在随后的start()方法中打印,该值存在,
在onload与start之间还会存在其他操作吗?
这个情况下。我来分析一下。进入场景, 根节点激活,然后深度优先遍历这个根节点,把所有节点的组件们的 preload 打入一个 preload队列(同一个节点的组件可以设置优先级来决定调用顺序),所有节点的的组件们的 onLoad打入一个 onLoad 队列,把所有节点的的组件们的 onEnable 打入一个 onEnable 队列。然后 顺序执行 preload 队列的所有 preload, 再顺序执行 onLoad 队列的所有 onLoad, 再顺序执行 onEnable 队列的所有onEnable。
由于cc.director的mainLoop要开始工作了,然后在 this._scheduler.update(this._deltaTime); 这一层执行场景树种所有节点的组件们的start方法(依然是深度优先遍历,同一个节点的组件可以设置优先级来决定调用顺序),这边是start执行的地方。
如果你想在 onLoad打印一个值存在,那个那个值初始化所在的onLoad,是在你 那个onLoad之前执行还是之后执行。这个你需要看看场景树
在onload中进行初始化,而且打印了也存在
在onload之后有个public方法中,打印不存在
在start中打印,又存在,很奇怪
而且第一次场景加载完,这三个地方都存在,退出当前场景,再次进入这个场景,就会出现这个问题
这个只能上传代码才能看了
解决了,是mvc中调用的问题,与生命周期无关
谢谢