アップデートと固定アップデート
Unity では、Update 関数と FixedUpdate 関数の両方がシーン内のオブジェクトの behavior を更新するために使用されます。これらは同様の目的を果たしますが、この 2 つの関数には重要な違いがあります。 。
'Update'
'Update' 関数はフレームごとに 1 回呼び出され、input の処理、オブジェクト positions の更新、およびほとんどの汎用タスクの実行に最適です。フレームレートに依存しません。つまり、パフォーマンス に応じて実行時間が変化する可能性があります。
void Update()
{
// Input handling
float horizontalInput = Input.GetAxis("Horizontal");
float verticalInput = Input.GetAxis("Vertical");
// Movement
Vector3 movement = new Vector3(horizontalInput, 0, verticalInput);
transform.Translate(movement * speed * Time.deltaTime);
// General-purpose tasks
// ...
}
上の例では、水平軸と垂直軸から入力を取得し、それを使用してオブジェクトの動きを制御します。'Translate' メソッドは、オブジェクトを指定された方向に一定の速度で移動するために使用されます。汎用タスクは関数 'Update' 内で実行することもできます。
'FixedUpdate'
関数 'FixedUpdate' は一定の時間間隔で呼び出されるため、物理関連の計算を処理するのに適しています。フレームレートに依存しないため、さまざまなデバイスやフレームレートにわたって一貫した動作が保証されます。
void FixedUpdate()
{
// Physics calculations
rb.AddForce(transform.forward * forceMagnitude);
// Other physics-related tasks
// ...
}
上の例では、オブジェクトの前方向に一定の力を Rigidbody コンポーネントに適用します。'FixedUpdate' を使用すると、フレーム レートに関係なく、物理計算が固定レートで実行されます。これは安定した物理シミュレーションを維持するために重要です。
'Update' 対「FixedUpdate」
関数 'Update' と 'FixedUpdate' の主な違い:
- 'Update' FixedUpdate は一定の時間間隔で呼び出されますが、FixedUpdate はフレームごとに 1 回呼び出されます。
- 'Update' FixedUpdate はフレームレートに依存しませんが、FixedUpdate はフレームレートに依存します。
- 'Update' 入力処理、オブジェクトの移動、物理関連以外の操作など、ほとんどの汎用タスクに適しています。
- FixedUpdate は、力の適用、Rigidbody プロパティの調整、その他の物理ベースの操作の実行など、物理関連の計算用に特別に設計されています。
結論
'Update' と 'FixedUpdate' は同じスクリプト内に共存できるため、物理関連のコードを他の汎用コードから分離できることに注意することが重要です。違いを理解し、それぞれのコンテキストで適切な関数を使用すると、Unity プロジェクト でのスムーズで一貫した動作を確保するのに役立ちます。