fall and fall

ゲーム、プログラミング、二次創作のことなどを書いています。

Unity UI 複数の画面解像度に対応させる方法(Canvas Scaler)

Unity UI で開発するゲーム(アプリ)を、複数の画面解像度に対応させる方法を書いていきます。

バージョン

  • Unity 2021.3.14f1(LTS)

前提

以下のゲームを想定しています。

事前作業

事前にゲームウィンドウで、アスペクト比を 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 のマニュアルなどを参照して頂ければと思います。

Canvas Scaler - Unityマニュアル