そういうのがいいブログ

アプリ個人開発 まるブログ

アプリ開発覚え書き

【Unity】実機でフレームレートを確認しながら解像度を変更する

参考記事をまとめて実施したかったのでメモ

解像度変更

・ボタンのUI作成
・ボタンにpublic void ChangeRate(int RefreshRate)を割り付け引数設定が必要
・テキストの作成
・このスクリプト public Text fpsText にテキストオブジェクトのアタッチが必要

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;//追加

public class RateCheck : MonoBehaviour
{
    //テスト用 解像度変更 RefreshRateは60まで 小5 微15 中30 大60
    //ボタンを作り、ボタンの引数に5、15、30、60を設定した
    //参考 https://kan-kikuchi.hatenablog.com/entry/UnityTips3
    public void ChangeRate(int RefreshRate)
    {
        float screenRate = (float)1024 / Screen.height;
        if (screenRate > 1) screenRate = 1;
        int width = (int)(Screen.width * screenRate);
        int height = (int)(Screen.height * screenRate);
        Screen.SetResolution(width, height, true, RefreshRate);
    }


    //フレームレートチェック
    //参考 https://ekulabo.com/frame-rate-time
    public Text fpsText;// フレームレートを表示するテキストです。   
    private int frameCount;// Update()が呼ばれた回数をカウントします。   
    private float elapsedTime;// 前回フレームレートを表示してからの経過時間です。    

    void Update()
    {
        // 呼ばれた回数を加算します。
        frameCount++;

        // 前のフレームからの経過時間を加算します。
        elapsedTime += Time.deltaTime;

        if (elapsedTime >= 1.0f)
        {
            // 経過時間が1秒を超えていたら、フレームレートを計算します。
            float fps = 1.0f * frameCount / elapsedTime;

            // 計算したフレームレートを画面に表示します。(小数点以下2ケタまで)
            string fpsRate = $"FPS: {fps.ToString("F2")}";
            fpsText.text = fpsRate;

            // フレームのカウントと経過時間を初期化します。
            frameCount = 0;
            elapsedTime = 0f;
        }
    }
}

参考

kan-kikuchi.hatenablog.com

ekulabo.com

Screen-SetResolution - Unity スクリプトリファレンス