1. 程式人生 > >untiy3d的MonoBehaviour的默認函數調用順序

untiy3d的MonoBehaviour的默認函數調用順序

不支持 註意 建議 需要 update nbsp .cn image 實例化

技術分享技術分享

(以上圖片轉載自網上)

Awake:當一個腳本實例被載入時Awake被調用,要先於Start。建議少用,此刻物體可能還沒有實例化出來,會影響程序執行順序。需要註意的是,假設實例化一個物件: GameObject go = new GameObject(); go.GetComponent().Test(); 這個Test()的調用順序會在Awake()之後,在Start()之前 unity不支持多線程,所有腳本都跑在主線程上。每個腳本的Awake、Update、LateUpdate、FixedUpdate等等,方法在後臺都有一個總匯。
後臺的方法 Awake、Update、LateUpdate、FixedUpdate等等都是按照順序,等所有子腳本中的Awake執行完畢後在去執行 Start 、Update、LateUpdate等等
。所以這裏也就解釋了Unity沒有多線程的概念。
所有Awake() { 腳本0的Awake(); 腳本1的Awake(); } ↓↓↓↓↓↓↓↓↓↓↓↓
所有Update() { 腳本0的Update(); 腳本1的Update(); } ↓↓↓↓↓↓↓↓↓↓↓↓ 所有LateUpdate() { 腳本0的LateUpdate(); 腳本1的LateUpdate(); } 更詳細的參考:https://docs.unity3d.com/ScriptReference/MonoBehaviour.html

untiy3d的MonoBehaviour的默認函數調用順序