こんにちは、Unityエンジニアのオオバです。

お悩みさん
お悩みさん
  • UI画像を画面全体に表示したい
  • 複数の解像度に自動的に対応してもらいたい
  • オオバ
    オオバ
    本記事ではこれらの悩みを解決します。

    UI開発しているとUIデザイナーから 「画像の比率を変えずに背景いっぱいに表示したい」 という依頼が来るときがあります。UnityのUIにあまり慣れていない人は、どうすればよいだろうと迷う方もいらっしゃるかもしれません。

    この記事ではタイトルの通り、Unity UI(uGUI)で画像比率を変えずに画面いっぱいに表示させる方法を紹介します。

    一見難しそうなお題で何行もプログラミングをしないといけなそうに感じますが、 実はめちゃくちゃ簡単 です。

    ソースコードを1行も書かずに実装できますので、ぜひ最後まで読んでみてください。

    Unityが「AspectRatioFitter」という便利コンポーネントを用意済み

    結論から言うと、Unityがすでに用意してくれています。

    AspectRatioFitter コンポーネントです。

    このコンポーネントを使えばプログラミング不要で画像をスクリーンいっぱいに表示させることが可能。

    【Unity】比率を変えずに画像を画面いっぱいに表示させる方法(uGUI編)_0

    このように画面解像度の比率を変えても画面いっぱいにUI画像を表示できます。

    この記事ではAspectRatioFitterの使い方を分かりやすく解説していきます。

    👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!

    【準備】サンプル画像の用意、CanvasとImageの作成

    AspectRatioFitterを解説する前の準備をしていきます。

    AspectRatioFitterを適用するサンプル画像の用意

    今回は画像を2種類用意しました。1つは正方形、もう1つは長方形です。

    正方形長方形
    【Unity】比率を変えずに画像を画面いっぱいに表示させる方法(uGUI編)_1
    【Unity】比率を変えずに画像を画面いっぱいに表示させる方法(uGUI編)_1
    幅と高さの比率 → 1:1幅と高さの比率 → 16:9

    これらの画像をAspectRatioFitterで画面全体に表示していこうと思います。

    UI画像を表示するためにCanvasとImageの作成

    今回はUI画像を扱うため、Canvasコンポーネントを使います。
    Canvasについては、このブログでいつも使用している設定なので、次の記事を参考にしてみてください。

    【Unity】比率を変えずに画像を画面いっぱいに表示させる方法(uGUI編)_2

    Hierarchyはこのような感じで、Imageに画像をセットします。

    AspectRatioFitterコンポーネントの使い方

    早速AspectRatioFitterの使い方を解説します。

    先のImageコンポーネントに、正方形の画像をセットしてみましょう。すると以下のような画面になります。

    【Unity】比率を変えずに画像を画面いっぱいに表示させる方法(uGUI編)_3

    ここで下図のように ImageAspectRatioFitter をセットします。

    【Unity】比率を変えずに画像を画面いっぱいに表示させる方法(uGUI編)_4

    Aspect Modeを Envelope Parent に設定します。

    【Unity】比率を変えずに画像を画面いっぱいに表示させる方法(uGUI編)_5

    Aspect Ratioを 1 に設定します。

    【Unity】比率を変えずに画像を画面いっぱいに表示させる方法(uGUI編)_6

    するとどうなったでしょうか。

    【Unity】比率を変えずに画像を画面いっぱいに表示させる方法(uGUI編)_7

    このように画面いっぱいに画像が表示されるようになりました。

    【Unity】比率を変えずに画像を画面いっぱいに表示させる方法(uGUI編)_8

    このようにGameビューのサイズを変更すると追随して表示領域が更新され画面いっぱいに画像が表示されるようになりました。

    AspectRatioFitterに別画像を使用する際の注意点

    正方形の画像は上手くいきました。次に16:9の長方形画像を試してみましょう。
    正方形画像がセットされていたImageコンポーネントに長方形をセットします。

    【Unity】比率を変えずに画像を画面いっぱいに表示させる方法(uGUI編)_9

    するとこんな感じで、縦横比率が崩れた状態になります。

    これは、AspectRatioFitterの Aspect Ratio が影響しています。

    Aspect Ratioには使用する画像の比率をセットする

    Aspect Ratioには現状 1 が入力されています。本来Aspect Ratioには使用する画像の比率をセットする必要があるのです。

    Aspect Ratio = 画像の幅 ÷ 画像の高さ  
    

    この公式でAspect Ratioを算出してください。
    先の正方形でAspect Ratioが1だったのは、縦横同じ長さだったからです。

    今回は16:9の画像なので、 16 ÷ 9 をしましょう。

    割り切れませんが答えは 1.77778

    【Unity】比率を変えずに画像を画面いっぱいに表示させる方法(uGUI編)_10

    この値をAspect Ratioにセットしてみます。

    【Unity】比率を変えずに画像を画面いっぱいに表示させる方法(uGUI編)_11

    すると、このように画像が16:9の比率を維持したまま画面いっぱいに表示されるようになりました。

    【Unity】比率を変えずに画像を画面いっぱいに表示させる方法(uGUI編)_12

    このようにGameビューの比率をどんなに極端に変更しても画面いっぱいに画像は表示されます。

    Aspect Ratioを使うだけで簡単に実装できました。

    まとめ

    この記事ではAspect Ratioを使った、画面全体に画像をフィットさせる方法を紹介してきました。
    最後に記事の内容を簡単にまとめます。

    画像をスクリーンにフィットさせる方法まとめ

    ①Aspect Ratioを使うとプログラミング無しで実装可能

    ②Aspect ModeはEnvelope Parentを使う

    ③Aspect Ratioは画像の幅÷高さの値を代入する

    こんな感じです。

    比率を変えずにUI画像を画面いっぱいに表示させたいという要望は、 開発の現場ではよくある案件 なのでUIを実装するエンジニア、デザイナーはぜひ覚えておいたほうが良いです。

    しかもAspectRatioFitterを使えば一行もソースコードを書かなくても実装できる点が非常に良いです。

    こんな感じでUnityのUI開発について、このブログで発信していきますので、ぜひ今後もチェックしてみてください。

    「Unity初心者大学」というUnity初心者向けのYouTube始めました!!
    ぜひチャンネル登録をお願いします!

    最後まで読んでいただきありがとうございました!
    すばらしいUnity UIライフをお過ごしください。

    オススメ記事
    検証環境