【Unity】ゲーム実行中に表示クオリティを変更する(設定画面などで使えます)

QualitySettings

UnityのQualitySettingsは、ゲームのグラフィックス品質を制御するための機能であり、ビルド時に選択できるグラフィックス品質レベルを定義することができます。この設定には、シェーダーの詳細度、テクスチャの解像度、影の品質、反射の品質、アンチエイリアスの品質など、ゲームの視覚効果に影響する多数のパラメータが含まれています。

QualitySettingsには、6つの品質レベルがデフォルトで用意されており、それぞれ、Very Low、Low、Medium、High、Very High、Ultraの6つの品質レベルがあります。それぞれの品質レベルには、異なるパラメータが設定されており、レベルが高いほど、グラフィックス品質が高くなりますが、処理速度が遅くなる可能性があります。

また、QualitySettingsは、スクリプトからアクセスすることもできます。たとえば、以下のようなスクリプトを使用して、品質レベルを変更することができます。

QualitySettings.SetQualityLevel(1); // 1はLow品質を表す

このようにして、ゲームプレイ中に品質レベルを切り替えることもできます。ただし、品質レベルを変更することで、ビルド時に設定した品質レベルを上書きすることになりますので、注意が必要です。

サンプル画面

1つの空のゲームオブジェクトを作成して、スクリプトをアタッチします
実行すると、画面上に表示クオリティを変更できるボタンが作成されます

using UnityEngine;

public class QuarytySample : MonoBehaviour
{
    void OnGUI()
    {
        string[] names = QualitySettings.names;
        GUILayout.BeginVertical();
        for (int i = 0; i < names.Length; i++)
        {
            if (GUILayout.Button(names[i]))
            {
                QualitySettings.SetQualityLevel(i, true);
            }
        }
        GUILayout.EndVertical();
    }
}

このコードは、Unityゲームエンジンで画質設定を変更するためのUIを提供するスクリプトです。

まず、using UnityEngine;により、Unity EngineのAPIを使用できるようになります。そして、public class QuarytySample : MonoBehaviourにより、このスクリプトがUnityコンポーネントとして機能することを示します。

void OnGUI()は、Unityが提供するGUIイベントの1つであり、ユーザーインターフェースを描画する際に呼び出されます。この関数では、QualitySettings.namesを使用して、利用可能な画質設定の名前を取得し、GUILayout.BeginVertical()で垂直なレイアウトを開始します。

forループは、各画質設定の名前に対して、GUILayout.Button()を作成し、ボタンがクリックされた場合にQualitySettings.SetQualityLevel()を呼び出して、選択された画質設定をアクティブにします。

最後に、GUILayout.EndVertical()を呼び出して、垂直なレイアウトを終了します。

このスクリプトをゲームオブジェクトにアタッチすることで、Unityエディターまたは実行中のアプリで、画質設定を簡単に変更するUIを提供できます。

Unity

Posted by hidepon