Unity腳本執(zhí)行順序

進階測試參考unity腳本MonoBehaviour默認方法執(zhí)行順序測試

將腳本掛到空物體上執(zhí)行

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/// <summary>
/// Unity腳本執(zhí)行順序 測試
/// </summary>
public class TestCallSequence : MonoBehaviour
{

    void Awake()
    {
        Debug.Log("Awake^^^^^^^^^^^^^");
    }

    void OnEnable()
    {
        Debug.Log("OnEnable^^^^^^^^^^^^^");
    }    
    // Use this for initialization
    void Start()
   {
       Debug.Log("Start^^^^^^^^^^^^^");
    }


    void FixedUpdate()
    {
        Debug.Log("FixedUpdate^^^^^^^^^^^^^");

    }
    // Update is called once per frame
    void Update()
    {
        Debug.Log("Update^^^^^^^^^^^^^");
        
    }

    void LateUpdate()
    {
        Debug.Log("LateUpdate^^^^^^^^^^^^^");
        
    }

    void OnGUI()
    {
        Debug.Log("OnGUI^^^^^^^^^^^^^");
    }

    void Reset()
    {
        Debug.Log("Reset^^^^^^^^^^^^^");
    }

    void OnDisable()
    {
        Debug.Log("OnDisable^^^^^^^^^^^^^");
    }   

    void OnDestroy()
    {
        Debug.Log("OnDestroy^^^^^^^^^^^^^");
    }
}

執(zhí)行結(jié)果

執(zhí)行結(jié)果

先運行腳本然后將將腳本組件改為非激活狀態(tài)(active=false)鞍时,然后停止運行。
上面的執(zhí)行結(jié)果說明方法的調(diào)用順序一部分是不固定的(FixedUpdate)。

Unity腳本從喚醒到銷毀都有著一套比較完善的生命周期,添加任何腳本都要遵守生命周期法則!  接下來介紹幾種系統(tǒng)自調(diào)用的重要方法。首先要我們先來說明一下它們的執(zhí)行順序: 
Awake --> Start --> Update --> FixedUpdate --> LateUpdate -->OnGUI -->Reset --> OnDisable -->OnDestroy  
下面我們針對每一個方法進行詳細的說明:  
1.Awake:用于在游戲開始之前初始化變量或游戲狀態(tài)。在腳本整個生命周期內(nèi)它僅被調(diào)用一次.Awake在所有對象被初始化之后調(diào)用霜大,所以你可以安全的與其他對象對話或用諸如GameObject.FindWithTag()這樣的函數(shù)搜索它們。每個游戲物體上的Awake以隨機的順序被調(diào)用革答。因此战坤,你應(yīng)該用Awake來設(shè)置腳本間的引用,并用Start來傳遞信息Awake總是在Start之前被調(diào)用残拐。它不能用來執(zhí)行協(xié)同程序途茫。  
2.Start:僅在Update函數(shù)第一次被調(diào)用前調(diào)用溪食。Start在behaviour的生命周期中只被調(diào)用一次慈省。它和Awake的不同是Start只在腳本實例被啟用時調(diào)用。你可以按需調(diào)整延遲初始化代碼眠菇。Awake總是在Start之前執(zhí)行边败。這允許你協(xié)調(diào)初始化順序。在所有腳本實例中捎废,Start函數(shù)總是在Awake函數(shù)之后調(diào)用笑窜。  
3.Update:正常幀更新登疗,用于更新邏輯排截。每一幀都執(zhí)行,處理Rigidbody時辐益,需要用FixedUpdate代替Update断傲。例如:給剛體加一個作用力時,你必須應(yīng)用作用力在FixedUpdate里的固定幀智政,而不是Update中的幀认罩。(兩者幀長不同)FixedUpdate,每固定幀繪制時執(zhí)行一次续捂,和update不同的是FixedUpdate是渲染幀執(zhí)行垦垂,如果你的渲染效率低下的時候FixedUpdate調(diào)用次數(shù)就會跟著下降。FixedUpdate比較適用于物理引擎的計算牙瓢,因為是跟每幀渲染有關(guān)劫拗。Update就比較適合做控制》耍  
4.FixedUpdate:固定幀更新页慷,在Unity導(dǎo)航菜單欄中,點擊“Edit”-->“Project Setting”-->“Time”菜單項后,右側(cè)的Inspector視圖將彈出時間管理器酒繁,其中“Fixed Timestep”選項用于設(shè)置FixedUpdate()的更新頻率滓彰,更新頻率默認為0.02s∮樱  
5.LateUpdate:在所有Update函數(shù)調(diào)用后被調(diào)用,和fixedupdate一樣都是每一幀都被調(diào)用執(zhí)行饼暑,這可用于調(diào)整腳本執(zhí)行順序稳析。例如:當(dāng)物體在Update里移動時,跟隨物體的相機可以在LateUpdate里實現(xiàn)弓叛。LateUpdate,在每幀Update執(zhí)行完畢調(diào)用彰居,他是在所有update結(jié)束后才調(diào)用,比較適合用于命令腳本的執(zhí)行撰筷。官網(wǎng)上例子是攝像機的跟隨陈惰,都是在所有update操作完才跟進攝像機,不然就有可能出現(xiàn)攝像機已經(jīng)推進了毕籽,但是視角里還未有角色的空幀出現(xiàn)抬闯。  
6.OnGUI:在渲染和處理GUI事件時調(diào)用关筒。比如:你畫一個button或label時常常用到它溶握。這意味著OnGUI也是每幀執(zhí)行一次≌舨ィ  
7.Reset:在用戶點擊檢視面板的Reset按鈕或者首次添加該組件時被調(diào)用睡榆。此函數(shù)只在編輯模式下被調(diào)用。Reset最常用于在檢視面板中給定一個默認值袍榆≌陀欤  
8.OnDisable:當(dāng)物體被銷毀時 OnDisable將被調(diào)用,并且可用于任意清理代碼包雀。腳本被卸載時宿崭,OnDisable將被調(diào)用,OnEnable在腳本被載入后調(diào)用才写。注意: OnDisable不能用于協(xié)同程序劳曹。  
9.OnDestroy:當(dāng)MonoBehaviour將被銷毀時琅摩,這個函數(shù)被調(diào)用铁孵。OnDestroy只會在預(yù)先已經(jīng)被激活的游戲物體上被調(diào)用。注意:OnDestroy也不能用于協(xié)同程序房资⊥扇埃  
備注:  協(xié)同程序,即在主程序運行時同時開啟另一段邏輯處理,來協(xié)同當(dāng)前程序的執(zhí)行岖沛。換句話說暑始,開啟協(xié)同程序就是開啟一個線程。
協(xié)同程序婴削,即在主程序運行時同時開啟另一段邏輯處理廊镜,來協(xié)同當(dāng)前程序的執(zhí)行。換句話說唉俗,開啟協(xié)同程序就是開啟一個線程嗤朴。在中,使用MonoBehaviour.StartCoroutine方法即可開啟一個協(xié)同程序虫溜,也就是說該方法必須在MonoBehaviour或繼承于MonoBehaviour的類中調(diào)用雹姊。
unity的生命周期;unity中畫線;unity3d使用ondestroy;unity生命周期函數(shù);unity onenable start;unity awake onenable;unity 生命周期;在unity畫線;unity畫線;unity3d ondestroy;unity 函數(shù)生命周期;unity start onenable;unity onenable awake
引用文章:
http://www.manew.com/thread-14461-1-1.html

腳本的生命周期流程圖

;

引用文章: http://www.reibang.com/p/1d93ece664e2

如果在其他腳本里面實例化物體,且物體上掛有該腳本:

腳本會在實例化時(Instantiate)Awake直接同步執(zhí)行衡楞,執(zhí)行完后才執(zhí)行Instantiate后面的代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吱雏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子瘾境,更是在濱河造成了極大的恐慌歧杏,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件迷守,死亡現(xiàn)場離奇詭異得滤,居然都是意外死亡,警方通過查閱死者的電腦和手機盒犹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門懂更,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人急膀,你說我怎么就攤上這事沮协。” “怎么了卓嫂?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵慷暂,是天一觀的道長。 經(jīng)常有香客問我晨雳,道長行瑞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任餐禁,我火速辦了婚禮血久,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘帮非。我一直安慰自己氧吐,他們只是感情好讹蘑,可當(dāng)我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著筑舅,像睡著了一般座慰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上翠拣,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天版仔,我揣著相機與錄音,去河邊找鬼误墓。 笑死蛮粮,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的优烧。 我是一名探鬼主播蝉揍,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼链峭,長吁一口氣:“原來是場噩夢啊……” “哼畦娄!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起弊仪,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤熙卡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后励饵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體驳癌,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年役听,在試婚紗的時候發(fā)現(xiàn)自己被綠了颓鲜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡典予,死狀恐怖甜滨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瘤袖,我是刑警寧澤衣摩,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站捂敌,受9級特大地震影響艾扮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜占婉,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一泡嘴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧逆济,春花似錦磕诊、人聲如沸填物。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽滞磺。三九已至,卻和暖如春莱褒,著一層夾襖步出監(jiān)牢的瞬間击困,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工广凸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留阅茶,地道東北人。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓谅海,卻偏偏與公主長得像脸哀,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子扭吁,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,612評論 2 350

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