6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Unity備忘録、STG制作2:フレームレートの調整

Posted at

※この記事は2年前くらい(2016年)に、当時在籍していた某社内で投稿したものを引き上げて、個人で再掲載しています。誰も読むことができない記事に価値なんてないからね~。Confidentialなネタは無いので念のため。

#背景
Unityの入門書を読むと、大抵は「Update関数のコールタイミングは環境や処理負荷に依存する」、というようなことが書かれている。
カジュアルゲームとかなら問題ないかもしれないが、例えばシューティングゲームのように「0.2秒間隔で弾を撃つ」というような処理を考えた場合、Update関数が不定期でコールされるとゲームバランスが崩壊してしまう。
そこで、今回はフレームレートを調整する方法を記載する。

#目標フレームレート
一般的なゲームは60FPSまたは30FPSである。
今回は60FPSとする。

#フレームレートを表示する
とりあえず初期設定でのフレームレートがどうなっているかを確認する。
以下のソースをMain Cameraに追加する。

DebugInfo.cs
using UnityEngine;
using System.Collections;
using UnityEngine.UI;


public class DebugInfo : MonoBehaviour {
	public Text FpsText;
	
	// Update is called once per frame
	void Update () {
		if (Time.frameCount % Application.targetFrameRate == 0)
		{
			FpsText.text = "FPS:" + (int)(1 / Time.deltaTime);
		}	
	}
}

これを自PCとスマホの両方で試したところ、何と普通に60FPSでした。
但し、今回はたまたまデフォルトが60FPSだったというだけなので、正式な手順で60FPSを設定する方法を次に記載する。

#フレームレート調整方法
(1)Edit -> Project Setting -> Qualityを開き、「V Sync Count」を「Don't Sync」にする。
01.png

(2)以下のプログラムをMainCameraに追加する。

SystemManager.cs
using UnityEngine;
using System.Collections;

public class SystemManager : MonoBehaviour {

	void Awake() { 
		Application.targetFrameRate = 60; //60FPSに設定	
	}
}

#実行結果
PC上ではこんな感じ。スマホでも同様の結果を得られた。
02.png

試しにApplication.targetFrameRate = 40 にした場合もちゃんと反映される。
03.png

以上

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?