Unityで作成したゲームの画面をモニター解像度に合わせてリサイズする方法

Unityのプレーヤー設定でデフォルト時のゲーム画面のサイズを決めることができるのですが、
使用しているPCの解像度によっては画面内に入りきらなかったり、ウィンドウが小さくなり過ぎてしまいました。
そのためゲーム起動時、モニターの画面解像度を取得しウィンドウサイズを変更するスクリプトを書いていきます。
下記のサイトの「解決法2_クリプトでスクリーンサイズを指定」を参考にしました。

【Unity】PC用にBuildしたゲームがFull Screenで表示される問題を解決する方法

モニターサイズに合わせて画面をリサイズするスクリプト

スクリプトは下記の通りに作成しました。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TestInitialize
{
    // 属性の設定
    [RuntimeInitializeOnLoadMethod]
    static void OnRuntimeMethodLoad()
    {
        //スクリーンサイズの指定
        int setWidth = Mathf.CeilToInt((float)Screen.currentResolution.width * (360.0f / 1920.0f));
        int setHeight = Mathf.CeilToInt((float)Screen.currentResolution.height * (640.0f / 1080.0f));
        Screen.SetResolution(setWidth, setHeight, false);
    }
}

スクリプトについて少し説明します。

int setWidth = Mathf.CeilToInt((float)Screen.currentResolution.width * (360.0f / 1920.0f));
int setHeight = Mathf.CeilToInt((float)Screen.currentResolution.height * (640.0f / 1080.0f));

「Screen.currentResolution.width」で表示画面の幅、「Screen.currentResolution.height」で表示画面の高さを取得します。
画面の幅と高さは1920×1080の画面に対して、360×640を基準の比率としたいので、
表示画面の幅に(360.0f / 1920.0f)、表示画面の高さに(640.0f / 1080.0f)をそれぞれ掛けています。

Screen.SetResolution(setWidth, setHeight, false);

1つ目の引数が画面幅、2つ目の引数が画面高さ、3つ目の引数がtrueだと全画面表示、falseだとウィンドウ表示となります。

Unity内にスクリプトを配置する

このスクリプトですが、Unityのプロジェクト内のどこにおいても呼び出されるみたいです。
僕の場合はこんな感じで格納しました。

これで起動時に設定した解像度でゲーム画面が開きます。
設定内容の動作を確認するには、上記の設定を行なった状態でビルドしたゲームを実行してください。
ビルドしたゲームを実行すると下記のように画面サイズが変わります。

コメント

タイトルとURLをコピーしました