Unity腳本:Update與FixedUpdate

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推薦載入中