以下の内容はhttps://bluebirdofoz.hatenablog.com/entry/2025/05/04/214136より取得しました。


Unityでアプリのウィンドウサイズ(解像度)をスクリプトから変更する

本日はUnityの小ネタ枠です。
Unityでアプリのウィンドウサイズ(解像度)をスクリプトから変更する方法です。

Screen.fullScreen

Screen.fullScreenを参照することで現在のウィンドウが最大化状態かを確認したり、変更することができます。
docs.unity3d.com

// ウィンドウモードに切り替える
Screen.fullScreen = false;

// フルスクリーンモードに切り替える
Screen.fullScreen = true;

Screen.SetResolution

Screen.SetResolution関数を使用することで現在の解像度をスクリプトから変更することができます。
docs.unity3d.com

// フルHDのウィンドウに切り替える
Screen.SetResolution(1920, 1080, false);

サンプルスクリプト

トグルボタンの操作に合わせてウィンドウモードと解像度を切り替える以下のサンプルスクリプトを作成しました。
それぞれサンプルシーンに追加してトグルの参照を設定しました。

ウィンドウモードを切り替えるサンプルスクリプト

・WindowModeSettingController

using UniRx;
using UnityEngine;
using UnityEngine.UI;

public class WindowModeSettingController : MonoBehaviour
{
    [SerializeField]
    private Toggle windowedToggle;

    [SerializeField]
    private Toggle fullscreenToggle;

    // Start is called before the first frame update
    void Start()
    {
        // 現在のウィンドウモードを取得する
        bool isFullscreen = Screen.fullScreen;
        // Toggleの状態を設定する
        windowedToggle.isOn = !isFullscreen;
        fullscreenToggle.isOn = isFullscreen;

        // Toggleのイベントリスナーを追加する
        windowedToggle.onValueChanged.AsObservable()
            .Subscribe(isOn =>
            {
                if (isOn)
                {
                    // ウィンドウモードに切り替える
                    Screen.fullScreen = false;
                }
            })
            .AddTo(this);

        fullscreenToggle.onValueChanged.AsObservable()
            .Subscribe(isOn =>
            {
                if (isOn)
                {
                    // フルスクリーンモードに切り替える
                    Screen.fullScreen = true;
                }
            })
            .AddTo(this);
    }
}


解像度を切り替えるサンプルスクリプト

・WindowModeSettingController

using UniRx;
using UnityEngine;
using UnityEngine.UI;

public class ResolutionSettingController : MonoBehaviour
{
    [SerializeField]
    private Toggle fullHDToggle;
    
    [SerializeField]
    private Toggle normalHDToggle;

    [SerializeField]
    private Toggle halfHDToggle;

    void Start()
    {
        // 現在の解像度を取得する
        Resolution currentResolution = Screen.currentResolution;
        // Toggleの状態を設定する
        fullHDToggle.isOn = (currentResolution.width == 1920 && currentResolution.height == 1080);
        normalHDToggle.isOn = (currentResolution.width == 1280 && currentResolution.height == 720);
        halfHDToggle.isOn = (currentResolution.width == 640 && currentResolution.height == 360);

        // Toggleのイベントリスナーを追加する
        fullHDToggle.onValueChanged.AsObservable()
            .Subscribe(isOn => {
                if (isOn) {
                    // 現在のウィンドウモードを取得する
                    bool isFullscreen = Screen.fullScreen;
                    // フルHDに切り替える
                    Screen.SetResolution(1920, 1080, isFullscreen);
                }
            })
            .AddTo(this);
            
        normalHDToggle.onValueChanged.AsObservable()
            .Subscribe(isOn => {
                if (isOn) {
                    // 現在のウィンドウモードを取得する
                    bool isFullscreen = Screen.fullScreen;
                    // HDに切り替える
                    Screen.SetResolution(1280, 720, isFullscreen);
                }
            })
            .AddTo(this);

        halfHDToggle.onValueChanged.AsObservable()
            .Subscribe(isOn => {
                if (isOn) {
                    // 現在のウィンドウモードを取得する
                    bool isFullscreen = Screen.fullScreen;
                    // 640x360に切り替える
                    Screen.SetResolution(640, 360, isFullscreen);
                }
            })
            .AddTo(this);
    }
}

プロジェクトをビルドしてアプリを起動して動作を確認してみました。
以下の通り、ウィンドウモードと解像度をボタン操作で変更することができました。

ウィンドウモードの切り替え

ウィンドウモード


フルスクリーンモード


解像度の切り替え

1920x1080


1280x720


640x360




以上の内容はhttps://bluebirdofoz.hatenablog.com/entry/2025/05/04/214136より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14