Learn iPhone, iOS, Objective-c, Swift, cocos2dx, Unity and ….?

iOSやAndroid開発でのエラー解決法や便利tipsのメモ

RSS Feed

Unity 〜UpdateとFixedUpdateの違い〜

0 Comments
Posted by Kuro on 2014/05/14

UnityのUpdate, FixedUpdateの違いとは

UpdateとFixedUpdateの違いについてとFixedUpdateにPhysics系の処理以外書くべきではない理由についてです。

Update

Updateは1frame(画面の描画単位)ごとに呼ばれます。
描画の間隔は処理能力に依存するため一定ではありません。
60fps(1秒間に60回描画)の場合、端末の処理に余裕があれば1/60 = 0.016666…に近い間隔で呼ばれることになります。

FPSの変更方法

FPSは以下のコードで設定できます。

*UnityのEditor(シュミレータ)上だと効かないので注意

FixedUpdate

FixedUpdateは固定のインターバルで呼ばれます。
defaultでは0.02秒(50fps)

FixedUpdateの変更方法

Edit→Project Settings→Time→TimeManagerのFixedTimestepで設定できます。

画面上で物体を動かすときには描画に合わせて1frameごとに座標位置を更新していくのが基本的な方法です。
Unityでよく使われる物理演算は描画に関係なく固定のintervalで計算されているため、物理演算に関わる処理はFixedUpdateに書く必要があります。

FixedUpdateにはPhysics系の処理以外書くべきではない理由

以下のコードのようにFixedUpdateのなかにInputを書いてはいけません。

入力イベントはframeごとに呼ばれます。
FixedUpdateが1回呼ばれるあいだに複数回Updateが呼ばれたときに、Inputを拾えない可能性があります。

FixedUpdateのintervalはゲームを作りながら変更する可能性があります。
FixedUpdateのなかにロジックを書いてしまうと、FixedUpdateのintervalを変更したときにロジックが機能しなくなる可能性があります。

FixedUpdateのintervalも絶対に固定というわけではなく、端末の処理能力によって遅れることもあります。

UpdateとFixedUpdateのinteval確認用コード

Time.deltaTimeで実際のintervalをとれます。
以下のような結果になりました。
unity-fixedupdate

スポンサードリンク


Filed under Programming, Unity
Tagged as
You can leave a comment, or trackback from your own site.

0 Comments

You can be the first to comment!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

スポンサードリンク

Popular Posts