個人的な設定

そういえば、Unity最初に触った時に、特に何も考えていなくて痛い目を見たのが、CanvasScalerでした。

私の場合は今のところAndroid端末した開発していませんが、ご参考までと、私の設定を記事にします。

今は流れるかのようにこの設定をしてしまうのですが、久しぶりに開いてあ、そういえばと思ったので。

Scale With Screen Sizeで固定

初期で開くと、この状態。

・Unityマニュアル:Constant Pixel Size
・リンク:https://docs.unity3d.com/ja/540/Manual/script-CanvasScaler.html

マニュアルによれば、「UI 要素をスクリーンサイズによらずピクセル単位で同様のサイズに保ちます。」となっています。

なるほど、わからん。

ちょっと記憶が曖昧ですが、これを設定して実機テストをした時に、UIがはみ出る、切れるなどがありました。

画面サイズに合わせて、UIの要素を替える必要があるということかしら、となって「Scale With Screen Size」にしたところ、これがビンゴ。

で、Reference Resolutionとは、「スプライトがこの ‘Pixels Per Unit’ 設定を有していれば、スプライトの 1 ピクセルは UI 内での 1 ユニットをカバーします。」となっています。

なるほど、わからん。

私の認識なので、あくまで参考。

このキャンバスの画像度を設定しているようなものだと思っています。作ろうとしているのは、Android端末のアスペクト比  16:10のもの。ということで、画像度は1920×1200に設定。

で、今、MatchをHeightにしているのですが、高さに合わせて調整して欲しいから。(横に合わせたかったら、Width)

上で一個ボタンを配置していたので、MatchをWidth⇄Heightして見ましょう。

という状態になります。

Canvas Scalerは初期で設定しておかないと大変

私は基本的に以下のように設定します。

・UI Scale Mode : Scale With Screen Size
・Constant Pixel Size : Reference Pixels Per Unit
・Reference Resolution :
アスペクト比が10:16 → 1200 x 1920
アスペクト比が16:10 → 1920 x 1200
・Match :
アスペクト比が10:16 → Width
アスペクト比が16:10 → Heigth

画像度は、高ければ画像もそれなりの画像度を揃えないといけないということです。ま、スマホでみる分はわからないとは思いますけどね。

これが、初期で設定を忘れてUI配置終わってから気づいたとしましょう。

惨事です。

設定変えて全てのUIが移動するのが見えますよ。まだ地道に修正してやらないといけないんで、シーン作成時に必ず初期で済ましています。