Unity UI で開発するゲーム(アプリ)を、複数の画面解像度に対応させる方法を書いていきます。
バージョン
- Unity 2021.3.14f1(LTS)
前提
以下のゲームを想定しています。
- 2D
- 16:9(アスペクト比)
事前作業
事前にゲームウィンドウで、アスペクト比を 16:9 に設定しました。
1. 対応方法
Canvas のインスペクターで、Canvas Scaler を表示します。それから、UI スケールモード(UI Scale Mode)を「画面サイズに拡大(Scale With Screen Size)」に設定します。
参照解像度は後述しますが、1920×1080 などに設定しておきます。
2. 確認
ゲームウィンドウの大きさを変えて、UI Text の表示を確認しました。
上は Canvas を拡大していて、下が縮小したものです。
画面サイズが変わると、UI Text のサイズも変わっていることがわかります。
3. 初期設定について
Canvas の UI スケールモードは、デフォルトだと「ピクセルサイズ定数(Constant Pixel Size)」でした。
画面サイズが変わっても UI要素のサイズが変わらないので、上のように見切れてしまうことがあります。
4. 参照解像度について
Canvas Scaler の参照解像度(Reference Resolution)は、以下のどちらかに設定したほうが良いかと考えています。
- 想定する一番大きい解像度
- メインターゲットになる解像度
また、一度決めた参照解像度を変更すると、既に作成した UI要素の大きさが変わります。なので、開発の初期段階で決めておきたいところです。
5. スクリーンマッチモードについて
Canvas Scaler のスクリーンマッチモード(Screen Match Mode)は「展開(Expand)」にしていますが、16:9 のアスペクト比であれば問題はなさそうです。
設定を「Match Width Or Height」にしている方もいらっしゃったので、必要に応じて Unity のマニュアルなどを参照して頂ければと思います。