LoginSignup
5
2

More than 1 year has passed since last update.

Unity UIを手動でレイアウトする方法

Last updated at Posted at 2021-12-23

はじめに

今日はクリスマス・イブ。
急いで仕事を片付けて帰ろうとしたその時、上司から呼び止められます。

「この UI画面のシーン ファイル、今日中に作っといて」

今までの貴方なら、やるせない悲しみを抱えつつ、様々なツールを起動していたかもしれません。

しかしこの記事を読んだ貴方なら、Unityだけを起動して、ポンポンポーンと作業して、

「お先で〜す!」

と帰れる・・・かもしれません。

レイアウトが面倒なのは、実は 2種類しかない

・ 任意個のサイズ固定のものを、片側に密着させる場合
・ サイズ固定と比率固定が混合のものを、両側に密着させる場合

これら 2つとも Layout Groupで実現できます。

🌟 基本の Hierarchy

毎回同じなので、覚えてしまいましょう!

Canvas

1) Canvasを追加してください
2) Render Modeを Screen Space - Cameraにします
3) Render Cameraを Main Camera (Camera)にします
Canvas.png

空の GameObject

1) Rect Transformを stretchで貼ります
2) Horizontal Layout Groupを追加します
縦向きのレイアウトの場合は Vertical Layout Groupを追加して下さい。
GameObject.png

Button と Spriteを設定しない Image

1) Layout Elementを追加します
Image.png

Text と Spriteを設定した Image

そのままで OKです。

🌟 任意個のサイズ固定のものを、片側に密着させる場合

片側密着.png

GameObject

Horizontal Layout Groupを設定します。

  • Control Child Size: On
  • Use Child Scale : On
  • Child Force Expand: Off

片側密着GameObject.png

Button と Spriteを設定しない Image

Layout Elementを設定します。

  • Min Width: サイズ固定の px

片側密着Button.png

片側密着Image.png

Text と Spriteを設定した Image

自身の横幅が自動で設定されるので設定は不要です。

🌟 サイズ固定と比率固定が混合のものを、両側に密着させる場合

両側密着.png

GameObject

Horizontal Layout Groupを設定します。

  • Control Child Size: On
  • Use Child Scale : On
  • Child Force Expand: On

両側密着GameObject.png

Button と Spriteを設定しない Image

Layout Elementを設定します。

  • Flexible Width: 10000... とにかく大きな値

両側密着color Image.png

🎉 実装例

現在「歳時記カレンダー+」という、日付をタップするとその日の記事が読めるカレンダー アプリを開発しています。この画面は Unity UIを使い、全て手動でレイアウトしています。日付は 1日毎に別々の GameObjectになっています。スワイプで左右にスクロールさせることが出来ますが、レイアウトは破綻しません。
capture_002.png
※画面は開発中のものです。

さいごに

実はこの方法を見つけるまで Unity UI (uGUI)で思い通りレイアウトできず、四苦八苦していました。Unity UIは説明不足で分かりづらくて・・・本当に時間を返してほしい😭

でも僕の涙がみんなの笑顔😊になるなら〜と思い、今回の知見を共有させていただきました。

皆様のクリスマスが楽しいものになりますように。メリークリスマス!⛄️🎄🎁✨

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2