パラメータがどういった影響を与えるのか分からなくなることがあるので、こちらにまとめる
※ Unity2020.3.14f1 での検証のため パラメータや挙動が異なる可能性がある
Padding
上下左右の余白部分のサイズ
0
5
20
Spacing
並べる要素間のサイズ
0
10
50
Child Alignment
子供のレイアウト要素の並べ方
Reverse Arrangement
子供の並び順を反転するかどうか
この並び順のとき
無効
有効
Control Child Size
子供のサイズを制御するかどうか。
有効にした場合は Inspector でサイズを変更することができなくなります
この際の制御されるサイズは LayoutElement
, ContentSizeFitter
などによって計算され
Min ~ Preferred or Flexible
の間のサイズに定まります
もう少し詳しく書くと ILayoutElement
を実装しているクラスであれば適切なサイズが取得できます
そのため、 Text
, TextMeshPro
, Image
などはそういった実装があるので LayoutElement
を追加しなくてもサイズが取得できたりします
Use Child Scale
配置時に子供のスケールを考慮するか
Min Width: 50
を 3つ並べ、真ん中の Scale を 2にしたときの挙動が下図になる
上が 有効
、下が 無効
にしたときの配置になる
見てわかるとおり 有効
にした際には、スケールを考慮した領域 (幅100) が確保されており
無効
にした場合は、考慮していない領域 (幅50) が確保されている
また 無効
にした際は Pivot による影響も受けるため、例えば Pivot を 1 にすると下図のようになってしまう
Child Force Expand
子の要素を強制的に拡張する
これは Control Child Size
が有効かどうかで挙動が変わってくるため、
親の Width: 200
、各子供の Width: 50
での状態で、各設定による変化を記述します
Control Child Size が有効
子供のサイズ変更が可能なため、子供の Rect が親のサイズに合わせて拡大します
子供のサイズ = 親 / 子供の数
で求められます
もし、子供に Layout Element
があり Min もしくは Preferred が設定されていた場合は子供のサイズ計算が異なり
子供のサイズ = (親 - 子供のサイズ合計) / 子供の数 + 子供のサイズ
で求められます
子供1 に Min Widht: 100
、子供2に Min Width: 20
が設定されていた場合
子供1のサイズ = (200 -(100 + 20) / 2 + 100) = 140
子供2のサイズ = (200 -(100 + 20) / 2 + 20) = 60
となるため以下のようになります
Control Child Size が無効
子供のサイズ変更が無効なため子供のサイズは変わらず Aliegnment に合わせて各スペースが均等になるように配置されます
Left
Center
Right
おまけ
HorizontalLayoutGroup や VerticalLayoutGroup をつけている RectTransform のサイズを子供の数によって変えたい場合は ContentSizeFitter
もつけると自動的にサイズを変えることができる