Unityでフレームレート(fps)を取得する
Unity逆引き:フレームレート(fps)を取得する
StatisticsウィンドウでFPSを確認する
Gameウィンドウの右上にあるStatsを押すと表示されるStatisticsウィンドウで、FPSを確認できます。
Statsで確認できるFPSはばらつきが大きいのと、スクリプトからは取得できません。
FPSを計算する (1)
その瞬間のFPS(1秒あたりのフレーム数)を求めるには、Time.deltaTimeの逆数を用います。 Time.deltaTimeは1つ前のフレームからの経過時間(秒)を表しています。
using UnityEngine; using System.Collections; public class Main : MonoBehaviour { void Update() { float fps = 1f / Time.deltaTime; Debug.LogFormat("{0}fps", fps); } }
FPSを計算する (2)
実際に一定時間あたりのフレーム更新回数を数えてFPSを算出する方法もあります。 この手法では、前述のよりも正確かつ安定した値を取得できます。
以下のサンプルでは、0.5秒間隔でフレームレートを計算しています。 Time.realtimeSinceStartupは、ゲーム開始時からの経過時間(秒)です。
using UnityEngine; using System.Collections; public class Main : MonoBehaviour { int frameCount; float prevTime; void Start() { frameCount = 0; prevTime = 0.0f; } void Update() { ++frameCount; float time = Time.realtimeSinceStartup - prevTime; if (time >= 0.5f) { Debug.LogFormat("{0}fps", frameCount / time); frameCount = 0; prevTime = Time.realtimeSinceStartup; } } }
参考: Unity - FPSを計測する
ターゲットフレームレートを取得する
ターゲットフレームレートとは、UnityEngineが目標とするFPSです。 Application.targetFrameRateから設定・取得できます。 初期値では-1が設定されています。負の値は「自動」を意味します。
public class Main : MonoBehaviour { void Start() { Debug.Log(Application.targetFrameRate); } }