この記事では、PCゲーム向けにUnityでウィンドウサイズを固定・変更する方法や、スクリプトを使用してウィンドウサイズを取得して自動調整する方法について解説します。また、ウィンドウサイズを変更してもアスペクト比を固定にする方法についても紹介します。
スマートフォン向けの画面設定についてはこちらをご覧ください。
PCゲームのウィンドウサイズを設定する必要性
ウィンドウサイズを設定することは、以下の理由から重要です。
- ゲームとしてちゃんと遊べるようにする:ゲームの表示領域が適切でないと、ユーザーに不便を感じさせてしまうことがあります。
- ゲーム内のUIの見栄えが変わらないようにできる:固定されたウィンドウサイズにより、ゲーム内のUIやグラフィックデザインの一貫性を保つことができます。
全画面表示(フルスクリーン)からウィンドウ表示に変更するには
前提として、まずは起動したら全画面表示で起動してしまうのを、ウィンドウ表示に変更します。
Unityのプレイヤー設定でデフォルトのウィンドウモードを設定することができます。
- プレイヤー設定を開く
- Unityエディタのメニューから
Edit > Project Settings
を選択し、左側のPlayer
をクリックします。
- Unityエディタのメニューから
- ウィンドウモードの設定
Resolution and Presentation
セクションで、Fullscreen Mode
をWindowed
に設定します。Default Screen Width
とDefault Screen Height
にデフォルトのウィンドウサイズを入力します(例: 1280×720)。
Fullscreen Modeの種類
Fullscreen Mode
をWindowedに設定することで、ウィンドウモードにできますがそれ以外の設定についての補足です。基本的には、全画面表示(Fullscreen Window)か、ウィンドウ表示(Windowed)かを選択することになると思います。
種類 | 内容 |
---|---|
Fullscreen Window | 全画面表示(デフォルト) 解像度は画面に合わせて自動で設定される ※全画面表示モードにしていても、Alt + Enter キーで全画面を解除することができます。 |
Exclusive Fullscreen (Windows専用) | 全画面表示だが、解像度は起動時に選択した値となる |
Maximized Window (Mac専用) | 全画面表示だが、解像度は起動時に選択した値となる |
Windowed | ウインドウ表示。ウィンドウの大きさを変えられる。 |
ウィンドウサイズを固定化させる方法
ウィンドウサイズを固定化するには、同様にUnityのPlayer Settings
で設定を行います。
Resolution and Presentation
セクションを見つけます。Default Screen Width
とDefault Screen Height
に希望のウィンドウサイズを入力します。Resizable Window
をオフにします。これにより、ウィンドウサイズが固定化されます。
スクリプトからウィンドウサイズを変更する設定方法
ゲームの実行中にウィンドウサイズを変更したい場合、Screenクラスを使います。
以下のようにスクリプトを使用して設定できます。
using UnityEngine;
public class WindowSizeManager : MonoBehaviour
{
void Start()
{
// ウィンドウサイズを変更 幅1280, 高さ720ピクセル
Screen.SetResolution(1280, 720, false);
}
}
このスクリプトを使用すると、ゲーム開始時にウィンドウサイズが1280×720ピクセルに設定されます。第3引数のfalse
はフルスクリーンモードを無効にするためのものです。
スクリプトでウィンドウサイズを取得して自動調整するには
現在のウィンドウサイズを取得するには、以下の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に変更します。
ウィンドウサイズを変えてもアスペクト比を固定にする方法
ウィンドウサイズを変更してもアスペクト比を固定にするには、以下のスクリプトを使用します。
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)を維持しながらウィンドウサイズを調整します。ウィンドウサイズが変更された場合でも、常にアスペクト比が維持されるようになります。
解像度を自動調整してくれる便利アセット
簡単にPC・スマホ・タブレット等の様々な画面に対応できる2Dゲーム用の便利なアセットはこちらです。
おわりに
PCゲームのウィンドウサイズの適切な設定は、プレイヤーの快適なゲーム体験に直結します。この記事を参考にして、自分のゲームに最適なウィンドウサイズ設定を見つけてみましょう。
UIの見栄えが変わらないようにするには、Canvas Scalerを使うのが便利です。