unity從喚醒到銷(xiāo)毀有一段生命周期,請(qǐng)列出系統(tǒng)自己調(diào)用的幾個(gè)重要方法
Awake->>Start->>Update->>FixedUpdate->>LateUpdate->>OnGUI->>Reset->>OnDisable->>OnDestory;

接下來(lái),做出一下講解:先執(zhí)行的方法是Awake,這是生命周期的開(kāi)始,用于進(jìn)行激活時(shí)的初始化代碼,一般可以在這個(gè)地方將當(dāng)前腳本禁用:this.enable=false,如果這樣做了,則會(huì)直接跳轉(zhuǎn)到OnDisable方法執(zhí)行一次,然后其他的任何方法,都將不再被執(zhí)行。
如果當(dāng)前腳本處于可用狀態(tài),則正常的執(zhí)行順序是繼續(xù)向下執(zhí)行OnEnable,當(dāng)然我們可以在另外一個(gè)腳本中實(shí)現(xiàn)這個(gè)腳本的啟動(dòng):this.enable = true;
再向下執(zhí)行,會(huì)進(jìn)行一個(gè)判斷,如果start方法還沒(méi)有被執(zhí)行一次,則會(huì)被執(zhí)行一次,如果已經(jīng)執(zhí)行了,則不會(huì)再被執(zhí)行。這是什么意思呢?我們可以在某個(gè)腳本中將組件禁用this.enable=false,再啟動(dòng)時(shí)會(huì)轉(zhuǎn)到OnEnable處執(zhí)行,這時(shí)繼續(xù)往下走,發(fā)現(xiàn)start執(zhí)行過(guò)了,將不再被執(zhí)行。比如說(shuō):第一次啟動(dòng)時(shí),將怪物的初始位置定在了(0,0,0)點(diǎn),然后怪物可能會(huì)發(fā)生了位置的變換,后來(lái)被禁用了,再次啟動(dòng)時(shí),不會(huì)讓怪物又回到初始的(0,0,0)位置。
繼續(xù)向后執(zhí)行,就是Update了,然后FixUpdate,再然后是LateUpdate,如果后面寫(xiě)了Reset,則會(huì)回到Update,在這4個(gè)事件間可以進(jìn)行循環(huán)流動(dòng)。
再向后執(zhí)行,就進(jìn)入了渲染模塊(Rendering),非常重要的一個(gè)方法就是OnGUI,用于繪制圖形界面。當(dāng)然,如果你使用了NGUI,這個(gè)生命周期的事情你就不用考慮了。
再向后,就是卸載模塊(TearDown),這里主要有兩個(gè)方法OnDisable與OnDestory。當(dāng)被禁用(enable=false)時(shí),會(huì)執(zhí)行OnDisable方法,但是這個(gè)時(shí)候,腳本不會(huì)銷(xiāo)毀,在這個(gè)狀態(tài)下,可以重新回到OnEnable狀態(tài)(enable=true)。當(dāng)手動(dòng)銷(xiāo)毀或附屬的游戲?qū)ο蟊讳N(xiāo)毀時(shí),OnDestory才會(huì)被執(zhí)行,當(dāng)前腳本的生命周期結(jié)束。