最終更新:
orika_ex_miyako 2023年05月01日(月) 18:48:05履歴
Unity の Project フォルダ内で新規の C# スクリプト・ファイルを作成します。
名前は「FrameRateLimiter」に変更してください。
以下のソースコードを記載してください。
using UnityEngine;
public class FrameRateLimiter : MonoBehaviour
{
[SerializeField] private int targetFrameRate = 60;
void Awake()
{
QualitySettings.vSyncCount = 0;
Application.targetFrameRate = targetFrameRate;
}
void Update()
{
if (Application.targetFrameRate != targetFrameRate)
{
Application.targetFrameRate = targetFrameRate;
}
}
}
targetFrameRate変数は、フレームレートの値を設定する変数です。この値にフレームレートの値を固定します。
インスペクターから設定できるように[SerializeField]属性を使用しています。
Awake()メソッドで、QualitySettings.vSyncCountを0に設定しています。
QualitySettingsは、Unityのグラフィックス品質設定を制御するためのクラスです。
このクラスを使用することで、プロジェクトのグラフィック品質設定にアクセスし、変更することができます。
QualitySettingsにはプロパティやメソッドが含まれており、今回はQualitySettings.vSyncCount を設定しています。
これは垂直同期のカウントを設定します。0はVSyncをオフにし、1はモニターのリフレッシュレートに同期し、2はリフレッシュレートの半分に同期します。
フレームレートの値を固定化するためには、0 に設定する必要があります。
同じく Awake()メソッドで、Application.targetFrameRate の値を設定しています。
この設定がフレームレートの値(固定値)になります。この値に targetFrameRateを設定することにより、指定したフレームレートの値に固定しています。
Update()メソッドでは、ターゲットフレームレートが変更された場合に再度フレームレートを設定するようにしています。
そのため、ゲーム実行中であってもフレームレートの値を変更し、それを反映させることができるようにしています。





コメントをかく