【Unity】ウィンドウサイズを固定・変更する方法!スクリプトも紹介

この記事では、PCゲーム向けにUnityでウィンドウサイズを固定・変更する方法や、スクリプトを使用してウィンドウサイズを取得して自動調整する方法について解説します。また、ウィンドウサイズを変更してもアスペクト比を固定にする方法についても紹介します。

スマートフォン向けの画面設定についてはこちらをご覧ください。

PR

PCゲームのウィンドウサイズを設定する必要性

ウィンドウサイズを設定することは、以下の理由から重要です。

  1. ゲームとしてちゃんと遊べるようにする:ゲームの表示領域が適切でないと、ユーザーに不便を感じさせてしまうことがあります。
  2. ゲーム内のUIの見栄えが変わらないようにできる:固定されたウィンドウサイズにより、ゲーム内のUIやグラフィックデザインの一貫性を保つことができます。
PR

全画面表示(フルスクリーン)からウィンドウ表示に変更するには

前提として、まずは起動したら全画面表示で起動してしまうのを、ウィンドウ表示に変更します。

Unityのプレイヤー設定でデフォルトのウィンドウモードを設定することができます。

  1. プレイヤー設定を開く
    • UnityエディタのメニューからEdit > Project Settingsを選択し、左側のPlayerをクリックします。
  2. ウィンドウモードの設定
    • Resolution and Presentationセクションで、Fullscreen ModeWindowedに設定します。
    • Default Screen WidthDefault Screen Heightにデフォルトのウィンドウサイズを入力します(例: 1280×720)。

Fullscreen Modeの種類

Fullscreen ModeをWindowedに設定することで、ウィンドウモードにできますがそれ以外の設定についての補足です。基本的には、全画面表示(Fullscreen Window)か、ウィンドウ表示(Windowed)かを選択することになると思います。

種類内容
Fullscreen Window   全画面表示(デフォルト)
解像度は画面に合わせて自動で設定される
※全画面表示モードにしていても、Alt + Enter キーで全画面を解除することができます。
Exclusive Fullscreen
(Windows専用)
全画面表示だが、解像度は起動時に選択した値となる
Maximized Window
(Mac専用)
全画面表示だが、解像度は起動時に選択した値となる
Windowedウインドウ表示。ウィンドウの大きさを変えられる。
Windows の Player 設定 - Unity マニュアル
このページでは、Windows に特化した Player 設定について説明します。一般的な Player 設定の説明については、Player 設定 を参照してください。
PR

ウィンドウサイズを固定化させる方法

ウィンドウサイズを固定化するには、同様にUnityのPlayer Settingsで設定を行います。

  1. Resolution and Presentationセクションを見つけます。
  2. Default Screen WidthDefault Screen Heightに希望のウィンドウサイズを入力します。
  3. Resizable Windowをオフにします。これにより、ウィンドウサイズが固定化されます。
PR

スクリプトからウィンドウサイズを変更する設定方法

ゲームの実行中にウィンドウサイズを変更したい場合、Screenクラスを使います。
以下のようにスクリプトを使用して設定できます。

Screen - Unity スクリプトリファレンス
ディスプレイ情報へのアクセス
using UnityEngine;

public class WindowSizeManager : MonoBehaviour
{
    void Start()
    {
        // ウィンドウサイズを変更 幅1280, 高さ720ピクセル
        Screen.SetResolution(1280, 720, false);
    }
}

このスクリプトを使用すると、ゲーム開始時にウィンドウサイズが1280×720ピクセルに設定されます。第3引数のfalseはフルスクリーンモードを無効にするためのものです。

PR

スクリプトでウィンドウサイズを取得して自動調整するには

現在のウィンドウサイズを取得するには、以下の2つを使います。こちらを使って、ウィンドウサイズを取得して変更することができます。

  • Screen.widthで横幅を取得
  • Screen.heightで縦幅を取得
using UnityEngine;

public class WindowSizeAdjuster : MonoBehaviour
{
    void Update()
    {
        // 現在のウィンドウサイズを取得
        int width = Screen.width;
        int height = Screen.height;

        // ウィンドウサイズに応じて処理を行う
        if (width < 800 || height < 600)
        {
            Screen.SetResolution(800, 600, false);
        }
    }
}

このスクリプトは、ウィンドウサイズが800×600未満になった場合、自動的にウィンドウサイズを800×600に変更します。

PR

ウィンドウサイズを変えてもアスペクト比を固定にする方法

ウィンドウサイズを変更してもアスペクト比を固定にするには、以下のスクリプトを使用します。

using UnityEngine;

public class AspectRatioMaintainer : MonoBehaviour
{
    public float targetAspect = 16.0f / 9.0f;

    void Start()
    {
        // アスペクト比を固定
        int width = Screen.width;
        int height = (int)(width / targetAspect);
        Screen.SetResolution(width, height, false);
    }

    void Update()
    {
        // ウィンドウサイズが変更された場合、アスペクト比を維持する
        int width = Screen.width;
        int height = Screen.height;
        float currentAspect = (float)width / height;

        if (Mathf.Abs(currentAspect - targetAspect) > 0.01f)
        {
            height = (int)(width / targetAspect);
            Screen.SetResolution(width, height, false);
        }
    }
}

このスクリプトは、指定されたアスペクト比(ここでは16:9)を維持しながらウィンドウサイズを調整します。ウィンドウサイズが変更された場合でも、常にアスペクト比が維持されるようになります。

PR

解像度を自動調整してくれる便利アセット

簡単にPC・スマホ・タブレット等の様々な画面に対応できる2Dゲーム用の便利なアセットはこちらです。

Resolution Magic 2D

PR

おわりに

PCゲームのウィンドウサイズの適切な設定は、プレイヤーの快適なゲーム体験に直結します。この記事を参考にして、自分のゲームに最適なウィンドウサイズ設定を見つけてみましょう。

UIの見栄えが変わらないようにするには、Canvas Scalerを使うのが便利です。