使用環境
・Unity Editor:2021.3.18f1
この記事でわかること
- Layout Groupの基本と使い方
- Horizontal Layout Group(横並び)とVertical Layout Group(縦並び)、Grid Layout Group(グリッド)を使ったアイテムの自動整列
- Content Size Fitterを使って動的にサイズを調整する方法
- スクリプトで動的にアイテムを追加・削除する方法
- よくあるエラーと解決策
UnityのLayout Groupとは?
今日は「Layout Group」の使い方について学んでいこう。
UIを自動でキレイに整列できる、とても便利なコンポーネントだよ。
あっ、それ使いたかったんです!
ボタンとかテキストを縦や横に並べたいのに、
手動で位置調整してて大変でした。
私はアイテムをスクリプトで追加したら、配置が崩れちゃって。
GridとかContent Size Fitterもあるけど、設定がよく分からなくて…
うんうん、それらを正しく使えば、自動で整列して、動的に増減してもキレイに保てるよ。
この記事では、Horizontal/Vertical/Grid Layout Group、Content Size Fitter、スクリプトでの操作方法、よくあるエラーの解決まで、丁寧に解説していくね。
UnityのLayout Groupの使い方
Layout Groupは、UIの自動整列をサポートする標準のコンポーネントです。
ボタンやテキストを手動で構成するのではなく、Layout Groupを使用して自動配置できます。
- 手動で調整せずに、キレイに並べられる
- アイテムを追加・削除しても、自動で再構成される
- 画面サイズの変化にも対応しやすい(レスポンシブデザイン)

※ この他にも以下のサイトを参考にしてください。
Layout Groupの種類と基本設定
Horizontal Layout Groupの追加と設定項目
① Hierarchy から追加
- [Hierarchy] → [右クリック] → [UI] → [Panel]
- [Add Component] → [Horizontal Layout Group]を追加

② Horizontal Layout Groupの構成要素

項目 | 説明 |
---|---|
Padding | 上下左右の余白を設定します。 |
Spacing | 子オブジェクトの間隔を設定する。 |
Child Alignment | 子要素の整列方法を設定する。 |
Reserve Arrangment | 要素の並び順を逆にする。 |
Control Child Size | 親コンテナが子要素のサイズ(Width、Height)を制御するかどうかを設定する。 |
Use Child Size | 子オブジェクトのスケール(Scale)を適用するかどうかを設定します。 |
Child Force Expand | 子オブジェクトが親のサイズ(Width、Height)に合わせて広がるかどうかを設定します。 |
Vertical Layout Groupの追加と設定項目
① Hierarchy から追加
- [Hierarchy] → [右クリック] → [UI] → [Panel]
- [Add Component] → [Vertical Layout Group]を追加

② Vertical Layout Groupの構成要素
Horizontal Layout Groupとおなじ。
Grid Layout Groupの追加と設定項目
① Hierarchy から追加
- [Hierarchy] → [右クリック] → [UI] → [Panel]
- [Add Component] → [Grid Layout Group]を追加

② Grid Layout Groupの構成要素

項目 | 説明 |
---|---|
Padding | 上下左右の余白を設定します。 |
Cell Size | 各グリッドセルの幅と高さを設定します。 |
Spacing | 子オブジェクトの間隔を設定する。 |
Start Corner | グリッドの並びの開始位置を設定します。 |
Start Axis | 要素を並べる優先軸を設定します。 |
Child Alignment | 各セル内での子オブジェクトの配置方法を設定する。 |
Constraint | グリッドの行や列の動的、静的を設定します。Flexible :親オブジェクトのサイズに応じて、動的に実行と列を決定する。Fixed Column Count:列の数を固定する。 Fixed Row Count:行の数を固定する。 |
Content Size Fitterの追加と設定項目
① Hierarchy から追加
- [Hierarchy] → [右クリック] → [UI] → [Panel]
- [Add Component] → [Vertical Layout Group]を追加
- [Add Component] → [Content Size Fitter]を追加

② Content Size Fitterの構成要素

項目 | 説明 |
---|---|
Horizontal Fit | Unconstrained:何もしません。 Min Size:子オブジェクトの最小サイズに基づいて幅を自動調整します。 Preferred Size:子オブジェクトの推奨サイズに合わせて幅を調整します。 |
Vertical Fit | Unconstrained:何もしません。 Min Size:子オブジェクトの最小サイズに基づいて幅を自動調整します。 Preferred Size:子オブジェクトの推奨サイズに合わせて幅を調整します。 |
スクリプトで動的にアイテムを追加・削除
ボタンを動的に追加
➡新しいテキストが追加され、パネルに自動的に並びます!
※ ボタンがあればOnClickで試してみるといいかもしれません。
using UnityEngine;
using UnityEngine.UI;
public class LayoutExample : MonoBehaviour
{
public GameObject textPrefab; // 追加するテキスト
public Transform contentPanel; // パネル
public void AddText()
{
// テキストオブジェクトを生成し、パネルに配置
GameObject newText = Instantiate(textPrefab, contentPanel);
}
}
ボタンを取り外す
➡ボタンをすべて削除してリセット可能!
//パネルの子オブジェクトをすべて削除する
public void RemoveAllButtons()
{
foreach (Transform child in contentPanel)
{
Destroy(child.gameObject);
}
}
よくあるエラーと解決策
アイテムが正しく並ばない
➡Control Child SizeをONにする(サイズを自動調整)
➡LayoutRebuilder.ForceRebuildLayoutImmediate()を実行
using UnityEngine;
using UnityEngine.UI;
public class LayoutExample : MonoBehaviour
{
public RectTransform layoutGroup;
void UpdateLayout()
{
LayoutRebuilder.ForceRebuildLayoutImmediate(layoutGroup);
}
}
まとめ
・Layout Groupを使うと、UIを自動で整列できる!
・Horizontal(横並び)、Vertical(縦並び)、Grid(グリッド)を活用
・Content Size Fitterを組み合わせて、親のサイズを自動調整
・スクリプトアイテムを追加・削除することも可能!