更新 vs 固定更新 vs 後期更新
Unity API の重要な部分は、継続的に実行される関数である更新関数です。
Unity 更新関数には 'Update'、FixedUpdate、LateUpdate の 3 種類があります。
'Update' 対 FixedUpdate
'Update' 関数と FixedUpdate 関数の違いは、実行頻度にあります。
'Update' 関数はフレームごとに 1 回実行されますが、FixedUpdate は 'Project Settings' -> 'Time' の "Fixed Timestamp" 値によって制御される一定のレートで実行されます。
'Update' 関数は、ゲーム ロジック、プレイヤー入力、および基本的に物理以外の計算のプログラミングに適しています。
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
//Space button has been pressed
}
}
一方、FixedUpdate 関数は、レイキャスティング、リジッドボディへの力の適用、またはフレームレートに依存しない必要がある計算などの物理ベースの計算に適しています。
void FixedUpdate()
{
//Use Physics Raycast to detect if there any object in front
RaycastHit hit;
if(Physics.Raycast(transform.position, transform.forward, out hit, 10))
{
Debug.Log("Object '" + hit.transform.name + "' is currently in front of this object.");
}
}
アップデートとの比較 LateUpdate
'Update' と LateUpdate は実行頻度の点では同じです (どちらもフレームごとに 1 回実行されます) が、LateUpdate はすべての 'Update' 関数の後に実行されます。
最後に、LateUpdate 関数は、アニメーション化されたモデルのボーンを変更する (例: プレーヤー モデルを上下に見せる) か、スムーズなカメラ フォローを実装するためによく使用されます。
void LateUpdate()
{
//Make camera tagged 'MainCamera' look at this object transform
Camera mainCamera = Camera.main;
mainCamera.transform.LookAt(transform);
}
取り除く
各更新関数には独自の使用例があります。
これらを組み合わせて使用することで、さまざまなシナリオを実装できます。