Containerノードの基本
Container
(コンテナ)ノードは、子ノードとしてコンテンツを持つことを前提としたノードです。
子ノードであるコンテンツを自動的にレイアウトすることを目的とした機能を持っています。
継承元のContainer
ノード自体はControl
ノードとほとんど機能は変わりませんので、単体で使用することはありません。
基本的にはContianer
を継承している以下で紹介するノードの拡張のために準備された機能を持っています。
コンテンツのレイアウト設定
基本的にContainer
の子ノードであるコンテンツはそれぞれの機能に応じて、自動的に大きさが決定され配置されます。
これは基本的に、コンテンツ自体のサイズやレイアウトを自由に決めることができないことを意味します。
ただし、コンテンツごとのContainer Sizing
で、コンテナ内でのサイズの設定を変更することができます。
これらはControl
ノードのレイアウト設定なので、Controlノードについてを参照してください。
単一コンテナ
単一コンテナはコンテンツを自動的にレイアウトしませんが、単一のコンテンツに対するレイアウトの設定を行うことができます。
パネルを作る
PanelContainer
は目に見えてわかりやすいコンテナです。
グラフィックが設定できるという以外は、基本のContainer
ノード(Control
ノード)と同じ機能になります。
panel
のプロパティを持っていますので、テーマ
でスタイル
を設定することができ、ウィンドウやヘッダー・フッターなどの下地に活用できます。
テーマ
とスタイル
については、テーマとスタイルについてを参照してください。
コンテンツのアスペクト比を固定する
AspectContainer
は、自身のサイズが変わっても、コンテンツの縦横比を変えずにコンテンツを拡大・縮小して表示します。
その際、縦を基準とするか横を基準とするかを設定することができます。
コンテンツのマージンを空ける
MarginContainer
はconstants
プロパティで、上下左右のマージンをピクセル単位で設定することができるコンテナです。
コンテナ内のコンテンツに対し、それぞれのマージンを設定することができます。
コンテンツをコンテナの縦横中央に配置する
CenterContainer
は、コンテンツを親であるCenterContainer
の縦横中央に配置します。
親コンテナはコンテンツの大きさが最小の大きさになります。
コンテンツをスクロールする
ScrollContainer
は、コンテンツをスクロールします。
親コンテナからはみ出したコンテンツはクリッピングされます。
整列コンテナ
整列コンテナは複数のコンテンツを自動的にレイアウトするコンテナです。
例えば、ゲームのインベントリや、設定画面の項目を並べるような場合に活用できます。
縦並び・横並びにする
VBoxContainer
またはHBoxContainer
は、複数のコンテンツを自動的に縦または横に並べて配置します。
コンテナのサイズよりも、コンテンツの合計サイズが大きくなる場合ははみ出して表示されます。
設定された個数分のコンテンツを順番に並べる
GridContainer
は、Columns
プロパティで設定された個数分のコンテンツを並べ、その個数を超えたら次の行に並べます。
もしも並んだコンテンツの横幅が、親のコンテナであるGridContainer
の横幅を超えた場合であっても、必ず並べるのが特徴です。
コンテンツの大きさに応じて並べる
FlowContainer
は、コンテンツの大きさに応じて自動的に並べ、GridContainer
のように詰めて表示します。
親のコンテナであるFlowContainer
の幅に応じて、収まりきらないコンテンツは次の行または列にカラム落ちします。
My PR for implementing FlowContainers(H/V) got merged today! This type of container arranges its child nodes similar to text and autowraps the ones which don't fit in a line.#GodotEngine pic.twitter.com/BJhORGiunm
— Geometror (@Hendrik_Brucker) January 18, 2022
コンテンツ同士のマージンを空ける
上記で紹介した整列コンテナのTheme Override
にはConstants
プロパティが設定されており、複数配置されたコンテンツ同士の上下左右のマージンを設定することができます。