Unity MonoBehaviour 生命周期整理

先大體的給一個(gè)官方的Flowchart然后再說一些實(shí)際上可能出現(xiàn)的細(xì)節(jié)問題需了。

image.png

原圖地址:https://docs.unity3d.com/uploads/Main/monobehaviour_flowchart.svg

就常用的函數(shù)來說順序是這樣的:
Awake > OnEnable > Start > FixedUpdate > Update > LateUpdate > OnWillRenderObject > OnGUI

======================================================================================
然后說一下常見的問題:

  1. FixedUpdate和Update問題:
    Update每幀調(diào)用装盯,但因?yàn)闄C(jī)器的性能原因秽誊,幀數(shù)是波動(dòng)的掐场,所以這個(gè)函數(shù)的刷新時(shí)間是不規(guī)律的莹规。如果在Update中添加物體勻速運(yùn)動(dòng)颠悬,需要乘上Time.deltatime
    FixedUpdate固定時(shí)間調(diào)用一次诱担,即一秒鐘調(diào)用的次數(shù)是固定的窑滞,如需更改頻率琼牧,可至Edit -> Project Setting -> Time中修改Fixed Timestep恢筝。如果同一次循環(huán)中出現(xiàn)FixedUpdate和Update那么FixedUpdate優(yōu)先,但不建議這兩個(gè)函數(shù)有依賴(因?yàn)閡pdate的刷新頻率一直在變啊巨坊,誰知道會(huì)發(fā)生什么)

  2. OnEnable和OnDisable函數(shù)都是一旦被setActive()修改撬槽,瞬間跳轉(zhuǎn)執(zhí)行。比如下圖的輸出是
    “On Disable”
    “Update”
    雖然實(shí)際上是update先開始


    image.png

    如果setActive(false), 那么先跳轉(zhuǎn)OnDisable趾撵,然后進(jìn)入正常流程等待OnDestory

  3. 另外以下函數(shù):Awake恢氯,Start, FixedUpdate, Update, LateUpdate, OnWillRenderObject, OnGUI都是項(xiàng)目中所有激活的component的同時(shí)運(yùn)行的,比如:
    “Awake code1”
    “Awake code2”
    ......
    "Update code1"
    "Update code2"
    ......
    而不是
    “Awake code1”
    “Start code1”
    “Fixed code1”
    ......
    “Awake code2”(這是錯(cuò)的)
    ......

  4. 實(shí)際上如果給OnEnable輸出顯示應(yīng)該是這樣的
    “Awake code1”
    “OnEnable code1”
    “Awake code2”
    “OnEnable code2”
    ......
    "Update code1"
    "Update code2"
    ......
    因?yàn)榫拖裎疑衔恼f的鼓寺,OnEnable和OnDisable是跳轉(zhuǎn)執(zhí)行的勋拟。
    如果通過Instantiate一個(gè)原先場景中沒有的prefab,那么瞬間跳轉(zhuǎn)執(zhí)行完prefab中所以代碼的Awake和Enable妈候。

  5. 關(guān)于所有Awake等函數(shù)內(nèi)部的順序敢靡,是后掛到激活的gameobject上的代碼,先運(yùn)行苦银⌒ル剩可以理解為unity用一個(gè)“棧”來維護(hù)所有component的運(yùn)行順序幔虏,和對(duì)應(yīng)gameobject掛入場景的順序無關(guān)纺念。但是OnWillRenderObject和OnGUI則不符合這個(gè)規(guī)律,他們有一套自己的先后順序標(biāo)準(zhǔn)想括。我們以后再研究陷谱。而且OnGUI一個(gè)循環(huán)內(nèi)會(huì)被調(diào)用多次。

  6. 關(guān)于StartCoroutine的問題瑟蜈,StartCoroutine(function())運(yùn)行的function會(huì)先運(yùn)行到y(tǒng)ield烟逊,然后
    yield WaitForFixedUpdate的話則到下一個(gè)有Fixupdate的循環(huán)再接著運(yùn)行。
    yield null(下次循環(huán)執(zhí)行)
    yield WaitForSeconds(t)(等待 t 時(shí)間后接著執(zhí)行下面命令)

  7. InitializeOnLoad問題铺根,[InitializeOnLoad]的且有static構(gòu)造函數(shù)的類會(huì)隨著unity項(xiàng)目的運(yùn)行第一個(gè)運(yùn)行宪躯,如下圖例子

image.png
image.png
  1. 另外關(guān)于Reset()函數(shù)問題:Reset函數(shù)在項(xiàng)目運(yùn)行階段是不運(yùn)行的,只在編輯模式運(yùn)行位迂,用于初始化參數(shù):運(yùn)行方式有兩種 1.手動(dòng)Reset如下圖访雪,2.給gameobject第一次掛上該script
image.png
image.png

上文都是我自己測試總結(jié)出來的,如果有疏漏歡迎指出~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末掂林,一起剝皮案震驚了整個(gè)濱河市臣缀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌党饮,老刑警劉巖肝陪,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異刑顺,居然都是意外死亡氯窍,警方通過查閱死者的電腦和手機(jī)饲常,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來狼讨,“玉大人贝淤,你說我怎么就攤上這事≌” “怎么了播聪?”我有些...
    開封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長布隔。 經(jīng)常有香客問我离陶,道長,這世上最難降的妖魔是什么衅檀? 我笑而不...
    開封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任招刨,我火速辦了婚禮,結(jié)果婚禮上哀军,老公的妹妹穿的比我還像新娘沉眶。我一直安慰自己,他們只是感情好杉适,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開白布谎倔。 她就那樣靜靜地躺著,像睡著了一般猿推。 火紅的嫁衣襯著肌膚如雪片习。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天彤守,我揣著相機(jī)與錄音毯侦,去河邊找鬼。 笑死具垫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的试幽。 我是一名探鬼主播筝蚕,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼铺坞!你這毒婦竟也來了起宽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤济榨,失蹤者是張志新(化名)和其女友劉穎坯沪,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體擒滑,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡腐晾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年叉弦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片藻糖。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡淹冰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出巨柒,到底是詐尸還是另有隱情樱拴,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布洋满,位于F島的核電站晶乔,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏牺勾。R本人自食惡果不足惜瘪弓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望禽最。 院中可真熱鬧腺怯,春花似錦、人聲如沸川无。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽懦趋。三九已至晾虑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間仅叫,已是汗流浹背帜篇。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留诫咱,地道東北人笙隙。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像坎缭,于是被迫代替她去往敵國和親竟痰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 一掏呼、下面我們來學(xué)習(xí)下腳本生命周期常用的10個(gè)腳本函數(shù): (1) Reset() 組件重設(shè)為默認(rèn)值時(shí)(只用于編輯狀態(tài)...
    李昀熹1112閱讀 22,513評(píng)論 0 12
  • Unity技術(shù)面試題 一:什么是協(xié)同程序坏快? 答:在主線程運(yùn)行時(shí)同時(shí)開啟另一段邏輯處理,來協(xié)助當(dāng)前程序的執(zhí)行憎夷。換句話...
    沐冉閱讀 2,897評(píng)論 1 19
  • [Unity]技術(shù)學(xué)習(xí)路線圖(長期更新) Unity技術(shù)面試題 一:什么是協(xié)同程序莽鸿?答:在主線程運(yùn)行時(shí)同時(shí)開啟另一...
    肖浩唄閱讀 23,510評(píng)論 15 243
  • 背景和概述 Unity Networking是官方自Unity5.1以來推出的新網(wǎng)絡(luò)通信解決方案。UNet是非官方...
    DonaldW閱讀 6,185評(píng)論 2 9
  • 母親是水鄉(xiāng)人拾给,記事時(shí)腦子里滿是隨母親回娘家的情景祥得。 作為一個(gè)在土里生長的孩子對(duì)坐船是向往的兔沃。身邊的小伙伴也總...
    薄荷羽閱讀 262評(píng)論 0 1