[unity]ゲーム中に、解像度変更したい

結構面倒なんだろうと思ってたんですが全然そんな事はなく、むしろ簡単すぎる事に驚いたって話。

プロジェクト

ソースコード

解像度リストをスクロールビューに一覧として表示し、ボタンを押すと指定の解像度に変更します。
なお、Unity Editor では動作しないのでビルドした環境でお試しください(これは Unity 規定の動作です)。

ポイントとなるコードに色を入れておきました。

using TMPro;
using UnityEngine;
using UnityEngine.UI;

public class Sample : MonoBehaviour
{
    [SerializeField]
    Toggle            Toggle = null;
    [SerializeField]
    Button            Button = null;
    [SerializeField]
    ContentSizeFitter Content = null;

    void Start()
    {
        Resolution[] resolutions = Screen.resolutions;

        foreach (var resolution in resolutions)
        {
            Button button = Instantiate(Button, Content.transform);
            button.gameObject.SetActive(true);

            TextMeshProUGUI text = button.GetComponentInChildren<TextMeshProUGUI>();
            text.SetText($"{resolution.width} x {resolution.height} {resolution.refreshRate}Hz");

            button.onClick.AddListener(() => OnClick(resolution));
        }
    }

    void OnClick(Resolution resolution)
    {
        Screen.SetResolution(resolution.width, resolution.height, Toggle.isOn, resolution.refreshRate);
    }
}

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA