unity從喚醒到銷毀有一段生命周期染簇,請(qǐng)列出系統(tǒng)自己調(diào)用的幾個(gè)重要方法
Awake->>Start->>Update->>FixedUpdate->>LateUpdate->>OnGUI->>Reset->>OnDisable->>OnDestory;
接下來,做出一下講解:先執(zhí)行的方法是Awake拉宗,這是生命周期的開始,用于進(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方法還沒有被執(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í)行過了,將不再被執(zhí)行悦污。比如說:第一次啟動(dòng)時(shí)铸屉,將怪物的初始位置定在了(0,0,0)點(diǎn),然后怪物可能會(huì)發(fā)生了位置的變換切端,后來被禁用了彻坛,再次啟動(dòng)時(shí),不會(huì)讓怪物又回到初始的(0,0,0)位置踏枣。
繼續(xù)向后執(zhí)行昌屉,就是Update了,然后FixUpdate茵瀑,再然后是LateUpdate间驮,如果后面寫了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ì)銷毀,在這個(gè)狀態(tài)下乳附,可以重新回到OnEnable狀態(tài)(enable=true)内地。當(dāng)手動(dòng)銷毀或附屬的游戲?qū)ο蟊讳N毀時(shí)伴澄,OnDestory才會(huì)被執(zhí)行赋除,當(dāng)前腳本的生命周期結(jié)束。