【Unity】画面のカクつき、それ本当にFPSのせい?

 

最近ではあまり宣伝文句として使われないような気がするけど、Unityの大きな特徴といえば、更新処理がスケーラブルというところ。

1回の描画の間に更新処理が何回走るのかはUnityしか知らない。

地味な初心者殺し。

 

ていうところで、Update()を実装して、その中にオブジェクト(いわば描画される側)の移動や、カメラ(いわば描画する側(※1))の移動を行うと問題が発生することがある。

 

つまり、前回の描画と今回の描画の間に更新処理が100回走ったけど、今回の描画と次回の描画の間には1回しか更新処理が走りませんでした。

なんてことになると、描画するたびにオブジェクトが一瞬で移動したり、逆に全く移動しなかったりする。

 

そんな時、移動量に対してTime.deltaTImeを適切に掛け合わせてあげよう。

Time.deltaTImeは、前回の更新処理と今回の更新処理の間の経過時間を返してくれる。

 

※1・・・厳密にはカメラが描画するわけではないけど、関係性は大体そんなもの。