【Unity】Unityでゲームの解像度とフルスクリーンモードを設定する方法

作成: 2025-12-07最終更新: 2026-07-10

オプション画面の「解像度」「フルスクリーン切り替え」はPCゲームの必須機能です。Screen.SetResolutionによる動的変更、FullScreenModeの使い分け、Screen.resolutionsで選択肢リストを作る実装、設定の保存までを解説します。

PCゲームのオプション画面に必ずある「解像度」と「フルスクリーン」の設定——プレイヤーのモニターは1080pから4K・ウルトラワイドまで様々なので、遊ぶ側が選べることがPC向けリリースでは必須機能です。

Unityでは Screenクラス でこれらをスクリプトから制御できます。この記事では、動的な変更・表示モードの使い分け・オプション画面のドロップダウン実装・設定の保存までを解説します。

解像度設定のイメージ。大小のモニターが並び、設定パネルのスライダーとトグルで画面サイズと表示モードを切り替えている

この記事でわかること

  • Screen.SetResolution() による解像度・表示モードの動的変更
  • FullScreenMode 4種の違い(主流はボーダーレス)
  • 実践:Screen.resolutionsでオプション画面の解像度設定を完成させる
  • 起動時のデフォルト設定と設定の保存

Sponsored

Screenクラスによる動的な設定変更

Screenは静的クラスなので、どこからでもScreen.〜で直接使えます。

現在の状態を取得する

int width = Screen.width;    // 現在のゲーム画面の幅(ピクセル)
int height = Screen.height;  // 現在のゲーム画面の高さ
bool isFullScreen = Screen.fullScreen; // フルスクリーンかどうか

解像度と表示モードを変更する: SetResolution()

using UnityEngine;

public class ResolutionController : MonoBehaviour
{
    // フルHDのボーダーレスフルスクリーンに設定
    public void SetFullScreen1080p()
    {
        Screen.SetResolution(1920, 1080, FullScreenMode.FullScreenWindow);
    }

    // HDのウィンドウモードに設定
    public void SetWindowed720p()
    {
        Screen.SetResolution(1280, 720, FullScreenMode.Windowed);
    }
}

UIのButtonのOnClick()からこれらを呼べば、クリックで切り替わります。なおSetResolutionの反映は呼び出したフレームの末尾です。直後のScreen.widthはまだ古い値を返すことがある、と覚えておくとハマりません。

フルスクリーンだけを切り替える

解像度はそのままに表示モードだけ切り替えるなら、Screen.fullScreenへの代入が手軽です。

public void ToggleFullScreen()
{
    Screen.fullScreen = !Screen.fullScreen;
}
Sponsored

FullScreenMode列挙型による表示モードの使い分け

bool引数版のSetResolutionは古い形式で、現在はFullScreenModeで詳細に指定するのが一般的です。

モード説明使いどころ
FullScreenWindowボーダーレス(画面全体に広がったウィンドウ)現在の主流。Alt+Tabがスムーズ
ExclusiveFullScreen排他的フルスクリーン描画性能を最優先したい場合(Windowsのみ)
Windowed通常のウィンドウウィンドウ派のプレイヤー向け
MaximizedWindow最大化ウィンドウmacOSのみ
フルスクリーンモード3種の比較。FullScreenWindow=ボーダーレスで現在の主流、ExclusiveFullScreen=排他的で性能最優先、Windowed=枠付きウィンドウ表示

迷ったら、デフォルトはFullScreenWindow(ボーダーレス) にしておくのが現代の無難な選択です。

public void SetBorderlessFullScreen()
{
    // モニターの現在の解像度いっぱいのボーダーレスにする
    Resolution current = Screen.currentResolution;
    Screen.SetResolution(current.width, current.height, FullScreenMode.FullScreenWindow);
}

実践:オプション画面の解像度設定を完成させる

Steam向けのインディーゲームでも、itch.ioの体験版でも、PCに出すなら避けて通れないのがオプション画面の 「解像度ドロップダウン+フルスクリーントグル+保存」の3点セット です。この記事の部品を組み合わせて完成させます。

オプション画面の解像度設定の完成形。Screen.resolutionsからモニター対応の解像度リストを作ってドロップダウンに並べ、選択とフルスクリーントグルをPlayerPrefsに保存して次回起動時に復元する

鍵は**Screen.resolutions**です。「1920x1080」「2560x1440」…と決め打ちで並べると、プレイヤーのモニターが対応していない解像度を選べてしまいます。Screen.resolutionsなら、そのモニターが実際にサポートする解像度の一覧を取得できます。

using UnityEngine;
using System.Linq;
using TMPro;

public class ResolutionDropdown : MonoBehaviour
{
    private const string PrefKey = "ResolutionIndex";

    [SerializeField] private TMP_Dropdown dropdown;
    private Resolution[] resolutions;

    void Start()
    {
        // 同じ縦横でリフレッシュレート違いが並ぶため、サイズで重複を除く
        resolutions = Screen.resolutions
            .GroupBy(r => new { r.width, r.height })
            .Select(g => g.Last()) // 各サイズの最高リフレッシュレートを採用
            .ToArray();

        dropdown.ClearOptions();
        dropdown.AddOptions(resolutions.Select(r => $"{r.width} x {r.height}").ToList());

        // 前回の選択を復元(保存がなければ現在の解像度に一番近いもの)
        int saved = PlayerPrefs.GetInt(PrefKey, FindCurrentIndex());
        dropdown.SetValueWithoutNotify(saved);
        ApplyResolution(saved);

        dropdown.onValueChanged.AddListener(OnResolutionSelected);
    }

    void OnResolutionSelected(int index)
    {
        ApplyResolution(index);
        PlayerPrefs.SetInt(PrefKey, index); // 選んだ瞬間に保存
    }

    void ApplyResolution(int index)
    {
        Resolution r = resolutions[Mathf.Clamp(index, 0, resolutions.Length - 1)];
        Screen.SetResolution(r.width, r.height, Screen.fullScreenMode);
    }

    int FindCurrentIndex()
    {
        for (int i = 0; i < resolutions.Length; i++)
        {
            if (resolutions[i].width == Screen.width && resolutions[i].height == Screen.height)
                return i;
        }
        return resolutions.Length - 1; // 見つからなければ最大解像度
    }
}

フルスクリーントグルはScreen.fullScreen = isOn;ToggleonValueChangedにつなぎ、同様にPlayerPrefsへ保存すれば3点セットの完成です。

ポイントは2つです。 「選択肢は決め打ちせずScreen.resolutionsから作る」(ウルトラワイドでも4Kでも、そのモニターに合ったリストが自動でできます)と、 「復元時はSetValueWithoutNotifyを使う」valueに直接代入するとonValueChangedが発火して、起動のたびに設定が二重適用されます)。保存まわりの詳しい作法は PlayerPrefs入門 をどうぞ。

ビルド時のデフォルト設定(Player Settings)

初回起動時のデフォルトは「Edit > Project Settings > Player」のResolution and Presentationで設定します。

  • Fullscreen Mode: 起動時のデフォルト表示モード。
  • Default Screen Width / Height: ウィンドウモード起動時のサイズ。
  • Resizable Window: プレイヤーがウィンドウの端をドラッグしてサイズ変更できるか。

おまけ:先に知っておくと良いこと

  • モバイルでは不要: iOS/Androidでは基本的に端末の画面をそのまま使うため、解像度選択UIは作りません。代わりに負荷調整として描画解像度を下げる手法があります(モバイル最適化のRender Scale)。
  • UIのスケーリングは別問題: 解像度を変えたときにUIが崩れるのは、Canvas Scalerの設定の問題です。CanvasとRectTransformの記事 を参照してください。
  • アスペクト比の違い: 16:9前提で作ると、ウルトラワイド(21:9)や16:10で見切れ・余白が発生します。カメラの視野とUIのアンカーを柔軟に組んでおくと安全です。
  • エディタでは確認できない: Screen.SetResolutionはエディタのGameビューでは効きません(Gameビューのサイズはエディタが管理しているため)。動作確認は ビルド して行います。

まとめ

  • 解像度と表示モードの変更は Screen.SetResolution(width, height, FullScreenMode)。反映はフレーム末尾。
  • 表示モードのデフォルトはボーダーレス(FullScreenWindow) が現代の主流。
  • オプション画面のリストは決め打ちではなく Screen.resolutions から作る。
  • 選択はPlayerPrefsに保存し、復元はSetValueWithoutNotifyで二重適用を防ぐ。
  • 初回起動時のデフォルトはPlayer Settings > Resolution and Presentationで。

「解像度ドロップダウン+フルスクリーントグル+保存」の3点セットができれば、PC向けオプション画面の土台は完成です。あなたのゲームは、ウルトラワイドモニターのプレイヤーにも快適ですか?