- 编辑器里面如果把一个组件的active设为false的话,在界面上的表现就是选中组件之后,在其"属性编辑器"组件名字边上的单选框对勾没有打上,此时组件在"层级管理器"中是以灰色显示的,界面上也会不可见。此时运行游戏后和挂载在该组件上的cc.Component组件,也就是我们自建的一些js文件代码中的onLoad生命周期钩子是不会被调用的,onLoad生命周期钩子只有此cc.Component组件的node在第一次acitve设为true后才会被调用。这种情况下,由于onLoad一直没有被调用,所以在onLoad中初始化的一些变量在其他方法中就一直是underfined的状态,比如
cc.Class({
extends: cc.Component,
onLoad(){
this.p = 'hello';
},
show(){
console.log(this.p);//输出undefined
}
})
-
切换场景或者手动调用组件的destroy方法后会执行onDestroy生命周期钩子,在此之前还会执行onDisable生命周期钩子,因此,清理工作代码就不需要在onDestroy和onDisable各复制一份了,只需要在onDisable中定义即可。
-
不论组件的onLoad是否会被调用,只要组件存在于场景上,那么场景加载时(包括preload)该组件的构造方法ctor都会被调用
网友评论