Unity 各Update関数の使い分け

ディジコンアドベントカレンダー2021 12月10日担当、ホネです。

adventar.org

 

UnityのUpdate関数とFixedUpdate関数とLateUpdate関数の使い分けについてのお話です。

 

Update関数って何?

Unityでスクリプトを作って開いたらデフォルトで書かれている関数の片割れです。

毎フレーム呼び出される関数

 

FixedUpdate関数って何?

一定間隔で呼び出される関数

 

LateUpdate関数って何?

Update関数の処理がすべて終わってから呼び出される関数

毎フレーム呼び出される

 

使い分け:LateUpdate関数とUpdate関数

実は複数のクラスにUpdate関数がある場合、どのUpdate関数から実行されるか決まっていません!

なので、LateUpdate関数はすべてのUpdate関数の計算結果を受けるので最終調整に向いている。

例:カメラの追従

使い分け:Update関数とFixedUpdate関数

Unity - マニュアル: イベント関数の実行順

↑ これはUnity公式のライフサイクル図ですが、FixedUpdateはPysicsのグループに含まれています。Pysics、つまり物理演算がFixedUpdateが呼ばれた後に実行されるので物理演算に関する処理は基本的にはFixedUpdate関数が向いています。

 

まとめ

Update関数は基本処理。

LateUpdate関数は最終調整。

FixedUpdate関数は物理演算。

それぞれこのように使い分けることができます。

しかし、この通りにしたからといってそれが最適な場合とは限りません。

物理演算でも、Update関数に書いたほうが良い場合もあります。

そこはライフサイクル図を見直したり、その処理がどういう処理なのかを考えてどこに書くのか決めたほうがよさそうです。