ボタンを画面に置いたはいいけれど、スマホでは端で見切れ、PCでは真ん中にぽつん——UIの位置を position で手で決めていると、画面サイズが変わるたびにレイアウトが崩れて頭を抱えることになります。
Godotはこれを、Controlノード と レイアウトコンテナ で解決します。「ここは縦に並べる」「ここは中央に置く」といったルールを決めておけば、あとはGodotが画面サイズに合わせて自動で配置してくれます。座標を1つずつ指定する作業から解放されるわけです。
この記事でわかること
Controlノードの アンカー で、画面サイズに追従させる考え方VBox・HBox・Gridなど主要 レイアウトコンテナ の使い分け- コンテナを 入れ子 にして、設定画面のような複雑なUIを組む方法
- Size Flags(Fill / Expand / Stretch Ratio)でスペースの分配を制御する
Controlノードとアンカー
UI要素の基盤になるのが Controlノード です。Sprite2D などの Node2D と同じく画面に描画されますが、UIならではの機能を持っています。
- アンカーとオフセット :親のどの位置を基準に、どれだけずらして配置するかを決めます。画面サイズが変わってもレイアウトを保つ鍵です。
- 入力処理 :ボタンのクリックやスライダー操作など、UI特有の入力を扱うシグナルを備えています。
- テーマ :色やフォントを一元管理する仕組みに対応します(テーマシステムによる統一的なUI設計 参照)。
とくに大事なのが アンカー です。「上辺は親の上に、下辺は親の下に固定」のように四隅の基準を決めておくと、画面が大きくても小さくても、UIがそれに追従します。

Full Rect(親いっぱいに広がる)、Center(中央)などのプリセットがインスペクタの「レイアウト 」メニューにあるので、まずはここから選ぶのが手軽です。
レイアウトコンテナで自動整列する
アンカーで1つ1つ配置してもよいのですが、「ボタンを縦に3つ」のような並びは、手で座標を決めるより レイアウトコンテナ に任せる方が圧倒的に楽です。
コンテナは、子のControlノードのサイズと位置を 自動で並べてくれる 特殊なControlノードです。開発者は座標ではなく「どう並べたいか」だけを考えればよくなります。

よく使うコンテナは次の通りです。
| コンテナ | 並べ方 | よくある用途 |
|---|---|---|
| VBoxContainer | 子を縦に並べる | メインメニュー、設定項目リスト |
| HBoxContainer | 子を横に並べる | ツールバー、OK/キャンセルボタン |
| GridContainer | 子を格子状に並べる | インベントリ、スキルツリー |
| MarginContainer | 子の周囲に余白を足す | 画面外周の安全な余白 |
| CenterContainer | 子を中 央に置く | タイトルロゴ、ポップアップ |
| PanelContainer | 背景パネルを描いて子を内側に | ウィンドウの背景 |
| ScrollContainer | はみ出したらスクロールバー | 長いリスト、可変数のアイテム |
格子状に並ぶ GridContainer は、まさに インベントリシステム設計の基礎 のようなマス目UIで活躍します。
Size Flagsでスペースを分配する
コンテナ内で子のサイズをどう扱うかを決めるのが Size Flags です。
- Fill :割り当てられたスペースを埋めるように広がる
- Expand :コンテナの余ったスペースを分け合って占有する
たとえば縦に並べた3つのボタンすべてに Expand を付けると、3つが高さを均等に分け合います。1つだけ2倍の高さにしたいときは、そのボタンの Stretch Ratio を 2 にします。
