PCゲームのオプション画面に必ずある「解像度」と「フルスクリーン」の設定——プレイヤーのモニターは1080pから4K・ウルトラワイドまで様々なので、遊ぶ側が選べることがPC向けリリースでは必須機能です。
Unityでは Screenクラス でこれらをスクリプトから制御できます。この記事では、動的な変更・表示モードの使い分け・オプション画面のドロップダウン実装・設定の保存までを解説します。
この記事でわかること
Screen.SetResolution()による解像度・表示モードの動的変更FullScreenMode4種の違い(主流はボーダーレス)- 実践:
Screen.resolutionsでオプション画面の解像度設定を完成させる- 起動時のデフォルト設定と設定の保存
動作確認環境: Unity 6 (6000.x)
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;
}
オンにしたときのモードは、Player Settingsで決めた既定のフルスクリーンモードになります。 ボーダーレスに決めたいときは、次の節のFullScreenModeで指定します。
FullScreenMode列挙型による表示モードの使い分け
SetResolutionにはboolで渡す形もありますが(trueでFullScreenWindow、falseでWindowed)、モードを細かく選べるFullScreenModeで指定するのが一般的です。
| モード | 説明 | 使いどころ |
|---|---|---|
| FullScreenWindow | ボーダーレス(画面全体に広がったウィンドウ) | 現在の主流。Alt+Tabがスムーズ |
| ExclusiveFullScreen | 排他的フルスクリーン(画面を独占) | Windowsのみ。Alt+Tabでの切り替えが重く、今はあまり使わない |
| Windowed | 通常のウィンドウ | ウィンドウ派のプレイヤー向け |
| MaximizedWindow | 最大化ウィンドウ | WindowsとmacOS(Windowsではタイトルバー付きで最大化) |
