Unity(C#)初心者・入門者向けチュートリアル ひよこのたまご

AndroidやiOS向けアプリを簡単に作れるゲーム開発環境Unity(ユニティ)の使い方を、チュートリアル方式で一緒に学びましょう!

Scroll ViewとLayoutコンポーネント群②LayoutElement

Unity 2019.2.0f1 Personal(2019年8月)

今回はLayout系コンポーネントの中でも
LayoutElementというコンポーネントについて調査します!
UnityのAuto Layout機能を使う上で欠かせないコンポーネントです!
ここらへんのコンポーネントについて頭の中で整理できていると
スムーズにUIを組み立てられるようになります!

LayoutElementとは?

LayoutElementはコンテンツを複数並べた時にコンテンツの幅(Widht/Height)を自動で調整してくれます。
LayoutElementはコンテンツそのものに付けます。
アイテムリストでいうアイテムひとつひとつにLayoutElementが付いているイメージです。

LayoutELementはコンテンツの親オブジェクトにLayoutGroup系のコンポーネントが付いていないと機能しません。
Scroll Viewでいうとコンテンツ配置先であるContentオブジェクトにLayoutGroupを付けておきます。

LayoutElementを使ってみる

それではScroll Viewの中でLayoutElementを使っていきましょう〜
まずはScroll Viewを作成します!
hiyotama.hatenablog.com

RectTransformはWidth:600とHeight:200に、
ScrollRectのVerticalをfalseに設定します〜

f:id:hiyotama:20190816220500p:plain
Scroll View設定
f:id:hiyotama:20190816220547p:plain
こんな感じ

続いてContentにHorizontalLayoutGroupコンポーネントを付け、
Spacingを10、Control Child SizeのWidthとHeightをtrueに設定します〜
f:id:hiyotama:20190816220943p:plain
続いてContent配下にImageのUIオブジェクトを作成します!
Control Child Sizeを有効にしたLayoutGroupの配下にImage(名前:MinImage)を置くと、
Width:0、Height:0となってしまいます。(LayoutGroupについては次回以降解説します。)
ImageにLayout Elementコンポーネントを付け、
Min Width:150、Min Height:150に設定することで
Imageが表示されます!
f:id:hiyotama:20190816222916p:plain
f:id:hiyotama:20190816223009p:plain

Min Width/Heightとは?

Layout ElementのMin Width/Heightを設定することでMin Imageが表示されました。
Min Width/Heightは最低でも必ず表示される幅を設定することができます。
親オブジェクトがLayoutElementの付いたオブジェクトより小さくなっても表示されるので、強力です。

Prefered Width/Heightとは?

Layout Elementには他にPrefered Width/Heightという項目があります。
こちらは表示する領域が残っていたら表示されます。
先ほどMin Imageを配置したContentの下に、もうひとつImage(名前:Prefered Image)を作成してみます。
そのImageにLayout Elementコンポーネントを付け、Prefered Width:150、Prefered Height:150に設定します。
f:id:hiyotama:20190816224952p:plain
縦横共に表示する余裕が残っているのでそのまま表示されます。
それではMin ImageのMin Widthを500に設定してみましょう。
f:id:hiyotama:20190816225349p:plain
90しか余裕がなかったので、Prefered ImageのWidthは90となりました。
表示する領域が残っていたら、とはこのような意味です。

Flexible Widht/Heightとは?

最後にFlexible Width/Heightですが、Min系とPrefered系以外の部分に表示されます。
Min系とPrefered系で埋まっていたらFlexible系は表示されません。
MinとPreferedに設定する数値はピクセルですが、Flexibleのみ割合を表す点に注意です。
なんの割合かというと、Flexible系のオブジェクトが2つ以上存在した場合の幅の割合です。
Layout Elementを付けたImageを2つ用意し、
Flexible Widthを0.6と0.4設定すると、6対4の割合で表示されます。
f:id:hiyotama:20190816231428p:plain

表示される優先度でいうとFlexible系が一番優先度が低くなります。
Min系 > Prefered系 > Flexible系
という優先度です。

参考:
tsubakit1.hateblo.jp