スマゲ

スマートなゲームづくりを目指して日々精進

UnityでのFPS設定まとめ

UnityでFPSがどのように設定されているのかをまとめます。

■FPS(Frames Per Second)とは
1秒あたりの画面更新回数。この値が高いほど動画やゲームが滑らかに見える。

■UnityでFPSを設定する方法
1. Quality Settingsから設定する
2. TargetFrameRateを設定する

■Quality Settingsから設定する
Unityのメニューバーから[Edit]を選択し
f:id:sanukin39:20160614230255p:plain
[Project Settings] -> [Quality]を選択する
f:id:sanukin39:20160614230328p:plain

Inspectorの中から[V Sync Count]を見つける
f:id:sanukin39:20160614230602p:plain

この項目ではレンダリングをディスプレイのリフレッシュレートと同期させるかどうかの設定ができる。同期させることの利点はティアリングによる画像乱れを防ぐことである。ここでは以下の3つの値を設定することができる。
・Every V Blank
すべての垂直ブランクと同期する
フレームレートがディスプレイのリフレッシュレートに依存するので、実行する端末によって変わる。iOSやAndroid端末の場合大体60fpsになる。

・Every Second V Blank
1つおきに垂直ブランクと同期する
レンダリング処理が1つの垂直ブランクでは収まらない場合に役に立つ。

・Don't Sync
全く同期しない

※垂直ブランク : ディスプレイが更新していないタイミング

■TargetFrameRateを設定する
まず[Quality Settings]で[V Sync Count]を[Don't Syncs]に設定する。
以下のコードを呼び出すことで、FPSを設定できる。この場合は60fpsの設定となる。

Application.targetFrameRate = 60;

デフォルトは -1 でこの数値の場合、スタンドアローンのゲームはできるだけ早くレンダリングを行う。
注意点として、設定したFPSが保証されることはない。60fpsに設定したからといって、レンダリング処理が重い場合はFPSが低下する。
またEditorではこの値は無視される

■まとめ
FPSは高いほど画面が滑らかに見えるが同時に処理量も増えるため端末が熱を持ったり電池が減りやすくなったりするデメリットがある。音ゲームやレースゲーム、格闘ゲームなど高いフレームレートが要求されるジャンルと、街づくりゲームなど頻繁な画面更新が必要ないゲームでは適切なフレームレートが異なる。よって作成するゲームに対して適切なFPSの設定をしたほうが良い。