この記事でのバージョン
Unity 2021.3.4f1
はじめに
UnityでPC(Windows&Mac)向けにゲームを作った際にProject Settingsで
フルスクリーン固定にしたり、デフォルトの画面サイズを指定する事は出来ますが、
「ウィンドウサイズは可変出来るけどアスペクト比は固定」みたいな事は出来ません。
という事で今回はアス比は固定したままウィンドウのサイズは可変出来るようにする方法の紹介です!
アスペクト比は固定したままウィンドウのサイズは可変出来るようにする方法
設定だけでは実現出来ないので、以下のようなプログラムを使います。
使い方は簡単、上記のWindowSizeAdjusterを起動時等に生成し、
DontDestroyOnLoadで破棄されないようにするだけ。
#if UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX //WindowSizeAdjusterの付いたオブジェクトを生成し、DontDestroyOnLoadでシーンを跨いでも破棄されないように DontDestroyOnLoad(new GameObject("WindowSizeAdjuster", typeof(WindowSizeAdjuster))); #endif
やってる事は単純で、一定時間ごとの画面サイズを確認してアスペクト比がおかしければ
Screen.SetResolutionを使って強制的に指定のアスペクト比にしています。
なお、SCREEN_RATEでアスペクト比の設定、UPDATE_SPANで更新の間隔を指定する事が出来ます。
アスペクト比を変更した時にユーザに通知を出すようにするとより親切かもしれません。