Awake() v.s. Start() v.s. Update() v.s. FixedUpdate() v.s. LateUpdate()
Awake() v.s. Start() v.s. Update() v.s. FixedUpdate()
Update() , FixedUpdate() , LateUpdate() 為不斷執行的函數
Awake(),Start()為一次執行的函數
細節稍後做解釋:
流程:
大致如下
Awake()->Start()->FixedUpdate()
Awake()->Start()->Update()->LateUpdate()
函數介紹:
我只說正常情況下,所謂的正常情況是沒有執行續中斷或例外被拋出或該物件被設定為enable或disable等造成程式碼無法以正常程序執行。
程式語言C/C++/C#管理程式中函數呼叫的方式很深,用到堆疊概念,若不懂得可以去google一下或修C++之類的課程,我稍微講解一下。若沒興趣可以跳過,直接往下看。
程式語言C/C++/C#管理函數呼叫的方式 (programmingconception.blogspot.com)
執行續概念很深,用到CPU的底層知識,若不懂得可以去google一下或修作業系統之類的課程,我稍微講解一下。若沒興趣可以跳過,直接往下看。
Thread(執行續) (programmingconception.blogspot.com)
Awake():
void Awake(){//一次性程式碼}
當該腳本(Script)被執行時,Awake()會先被呼叫
Start():
void Start(){//一次性程式碼}
當該腳本(Script)被執行時,Awake()會先被呼叫,再呼叫Start()
Update():
void Update(){//無限執行程式碼}
當該腳本(Script)被執行時,Start()被呼叫後,Update()會被呼叫,當執行完LateUpate()函數後過一禎(per frame),Update()又會被呼叫
FixedUpdate():
void FixedUpdate(){//無限執行程式碼}
當該腳本(Script)被執行時,Start()執行完,每過timeStep秒FixedUpdate()會被呼叫一次
LateUpdate():
void LateUpdate(){//無限執行程式碼}
當該腳本(Script)被執行時,Update()一執行完,LateUpdate()馬上會被呼叫
總結:
當腳本被執行時,先呼叫Awake()再呼叫Start(),每禎後呼叫Update(),每個timestep後呼叫FixedUpdate(),每個腳本的Update()被執行完十去呼叫LateUpdate()。
[NOTE]
其他屬性也可以在這個視窗設定。
(2)注意,若不是用Unity 2020.3.12f1版可能是在Unity中的edit->setting->Time中
網路上有的文章說是在Unity中的edit->setting->Time中設定但我的沒有edit->setting這個選項,所以我做這樣的推論。
Comments
Post a Comment