17
10

More than 3 years have passed since last update.

[Unity]uUGUIで可変長リストの中に可変長リストを作る

Posted at

こういうやつを作ります。

list.gif

普通の可変長リストを作る

まずはネストしていない普通の可変長リストを作ります。
始めに親にしたいオブジェクトにVerticalLayoutGroupなどのLayoutGroupを追加します。

image.png

この時点で子にオブジェクトを追加すると整列して配置されるようになりますが親のサイズは固定のままです。

image.png

配置する要素のサイズに合わせて親要素のサイズを変更したい場合はContent Size Fitterを使用します。
Content Size Fitterを使用すると要素の高さ、幅をPreferred HeightまたはPreferred Widthのサイズに変更することができます。

Preferred Widthについては公式のドキュメントに付加的に使用可能な幅が割り当てられる前に、この Layout 要素で優先される幅。のように記載があります。
分かりづらいですが色々やってみて慣れましょう。
要素の現在のPreferred Width/Heightはインスペクタから確認することができます。

image.png

Content Size Fitter をつけてHorizontal FitとVertical FitをPreferred Sizeに設定すると子要素のサイズに応じて親要素のサイズが変わるようになります。

image.png

ネストした可変長リストを作る

次は本題のネストした可変長リストを作ります。
普通に可変長リストの中に可変長リストを入れると以下のような警告がでます。

image.png

書いてある通りですがこれは親要素にLayoutGroupのコンポーネントが存在する場合、子要素にContent Size Fitterを使用するべきではないというものです。

これを回避するためには親のLayoutGroupコンポーネントのControl Child Sizeにチェックを入れます。

image.png

このパラメータにチェックを入れると子要素のすべての要素にContent Size Fitterを付けたときとほぼ同じ動きをします。

これで大体完成ですが一点注意することがあります。
それは固定長の要素の高さがつぶれてしまうことがある、というものです。
下の画像を見てください。

image.png

Listの最初の子要素であるButtonがつぶれて細長くなってしまっています。
これはButtonのPreferred Heightが10しかないため高さが10になってしまっているためです。
Preferred Heightを任意の値にするためにはLayout Elementコンポーネントを使用します。
Layout ElementのPreferred Heightにチェックを入れることで好きな値を設定することができます。

image.png

これで完成です。

最後に

知ってれば簡単なことですが知らないと苦労するので記事にしました。
uGUIは意外と色々できて便利です。

17
10
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
17
10