kidoOooOoooOOom

IT系で開発やってます

Unityとフレーム、Update()とTime.deltaTimeについて

フレームレートは、動画において、単位時間あたりいくつフレーム (映像)・コマのこと)が処理されるか、という値。
60fpsあれば十分に滑らかな映像が再現できるとされ、逆に、15fpsに満たない場合はカクカクする。

Unity におけるフレームは、1秒間に何枚という決まりが無いとのこと。処理の負荷が軽くなればそれだけ高速な書き換えが可能になるため、フレームの秒間枚数は増える。逆に負荷が重くなれば、書き換えは低速になり、フレームの秒間枚数は減る。

フレームとフレームの間隔は動的に変化する可能性があるため、前もってコンマ何秒のペースで Update 関数が呼ばれるという前提をもってスクリプトを書くと思ってもいない挙動になる可能性がある。

そこで便利なのが Time.deltaTime 。 Time.deltaTime には、前のフレームと今のフレームの時間的な差分が格納る(単位は秒)。このTime.deltaTimeを使って、差分の分だけオブジェクトを動かしたり時間処理を書くようにしないといけない。

また、UnityではFixedUpdate 関数というものが別に用意されている。フレームの概念とは関係なく一定時間毎に(デフォルトでは0.01秒)実行される。フレームに依存しない定期的に実行させたい処理はこの関数を使うのが良さそう。

参考URL
Unity におけるフレームと Update
http://unity-yb.github.io/articles/frame_and_update.html

フレームレート Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AC%E3%83%BC%E3%83%88