Unity腳本:Update與FixedUpdate
- 詳細內容
- 分類:Unity
- 發佈:2014-04-03, 週四 08:06
- 點擊數:3222
Update:
Update 大概是Unity中最常使用的函式了。
在腳本中的Update每個幀都會被執行一次。
幾乎所有經常要跟新或是調整的的程式碼都會寫在這。
像是非物理物件的移動,簡單的計時器,以及輸入檢測等等。
當然,除此之外還有其他更多的情況會需要在Update中完成,就不一一表述。
另外,有一點要注意的是,Update並非是固定時間執行的。
由於每個幀的間隔時間不盡相同,因此也導致了Update的執行間隔時間並不相同。
所以我們會很常看到在Update中使用Time.deltaTime取得幀與幀之間的間隔時間。
譬如說一個非物理物件的移動速度為每秒10m,那他每幀的實際移動量為:
10 * Time.deltaTime
假設此次Time.deltaTime為0.01,那就代表這個幀所造成的實際移動量為10*0.01=0.1m。
FixedUpdate:
FixedUpdate與update十分類似,但有個重要的不同是,FixedUpdate執行的間隔時間是相同的。
在FixedUpdate呼叫完後,會進行需要處理的物理計算。
因此任何會影響到剛體(rigidbody)的行為都應該被放到這裡面來執行而不適合在update中。
這裡的剛體指的其實就是物理物件。
常見的例子就是對一個物體施加一個力時,就應該將程式碼寫在FixedUpdate中。
rigidbody.AddForce(Vector3.up);
下面是官方提供的js程式碼,能夠測試每個Update與FixedUpdate的間隔時間:
#pragma strict function FixedUpdate () { Debug.Log("FixedUpdate time :" + Time.deltaTime); } function Update () { Debug.Log("Update time :" + Time.deltaTime); }
按個讚!~支持本站!~
FB推薦載入中