Update処理の違いについて、毎回忘れてしまうのでメモ
◾️Update
毎フレーム呼ばれる
注意点:
フレーム間隔が一定とは限らないので再現性を求められる処理には向かない
◾️LateUpdate
毎フレーム呼ばれる(Updateの処理が終わった後)
Updateの処理が終わって最後に何か行いたい処理がある場合に使用する
◾️FixedUpdate
一定時間(Fixed Timestep)毎に呼ばれる
注意点:
即時性を求められる処理には向かない
chaGPTにも聞いてみた。
UnityにおけるUpdateとFixedUpdateの違いは、フレームレート(fps)に関連しています
Update:
Updateメソッドは、フレームごとに呼び出されます。通常、画面の更新やユーザー入力の処理など、フレームごとに変わる内容を処理するために使用されます。
デフォルトでは、UnityのUpdateメソッドはフレームレートに依存します。つまり、フレームレートが高いほど、Updateメソッドがより頻繁に呼び出されます。
FixedUpdate:
FixedUpdateメソッドは、固定された時間間隔ごとに呼び出されます。通常、物理演算や動きの計算など、フレームレートによらず一定の間隔で処理が必要な場合に使用されます。
特に物理演算関連の処理はFixedUpdate内で行うことが推奨されます。なぜなら、Update内で物理演算を行うと、フレームレートによっては物体の動きが不安定になる可能性があるからです。
◾️入力処理はUpdate
FixedUpdateで行うと、呼び出しのタイミングよっては入力処理が検知できなくなってしまったり、ラグに繋がったりしてしまう。
◾️移動処理や物理演算など動きをつける処理はFixedUpdate
Updateは処理の重さによって一定時間に呼ばれる回数が変わってしまうため、そこで移動や物理演算を行うと状況に応じて結果に違いが生じてしまう。
フレーム毎に受け付ける必要がある入力処理等はUpdateに書く。逆に一定の動作をさせたい処理等はFixedUpdateに書く。実際プレイヤーが一定の速度で移動する処理をUpdateに書いたら、処理の重さによって速度が速くなったり遅くなったりしてしまっていました。