- 編輯器里面如果把一個(gè)組件的active設(shè)為false的話,在界面上的表現(xiàn)就是選中組件之后几迄,在其"屬性編輯器"組件名字邊上的單選框?qū)礇](méi)有打上,此時(shí)組件在"層級(jí)管理器"中是以灰色顯示的,界面上也會(huì)不可見(jiàn)呵恢。此時(shí)運(yùn)行游戲后和掛載在該組件上的cc.Component組件种蘸,也就是我們自建的一些js文件代碼中的onLoad生命周期鉤子是不會(huì)被調(diào)用的墓赴,onLoad生命周期鉤子只有此cc.Component組件的node在第一次acitve設(shè)為true后才會(huì)被調(diào)用。這種情況下航瞭,由于onLoad一直沒(méi)有被調(diào)用诫硕,所以在onLoad中初始化的一些變量在其他方法中就一直是underfined的狀態(tài),比如
cc.Class({
extends: cc.Component,
onLoad(){
this.p = 'hello';
},
show(){
console.log(this.p);//輸出undefined
}
})
切換場(chǎng)景或者手動(dòng)調(diào)用組件的destroy方法后會(huì)執(zhí)行onDestroy生命周期鉤子刊侯,在此之前還會(huì)執(zhí)行onDisable生命周期鉤子章办,因此,清理工作代碼就不需要在onDestroy和onDisable各復(fù)制一份了滨彻,只需要在onDisable中定義即可藕届。
不論組件的onLoad是否會(huì)被調(diào)用,只要組件存在于場(chǎng)景上亭饵,那么場(chǎng)景加載時(shí)(包括preload)該組件的構(gòu)造方法ctor都會(huì)被調(diào)用