Library)を使わないのですかなぜGodotは例外処理を使わないのですか?GodotがRTTI(実行時型情報)を強制しないのはなぜですか?GodotがユーザーにDoD(データ指向設計)の実装を強制しないのはなぜですか?Godotの開発をサポートしたり、貢献したりするにはどうすればいいですか?誰がGodotで働いていますか。sourceコントロールノードを使用したインターフェイスの設計¶パソコンのディスプレイ、携帯電話、TV画面などは、あらゆる形と大きさをしています。ゲームを公開する前に、異なるアスペクト比と解像度に対応させなければなりません。すべてのプラットフォームに対応するレスポンシブなインターフェースは、作るのが大変な場合もあります。うれしいことに、Godotにはレスポンシブなインターフェースをデザインして管理するための、強力なツール群が用意されています。Godotのエディタは、エンジンのUIフレームワークで作られていますこのガイドでは、UI設計を開始します。インターフェイスを制御し、他のスクリプトに接続する方法については、最初のゲームUIをGodotで構築するを参照してください。UIを設計するためにコントロール・ノードを使います。エディタ内に緑のアイコンのノードがあります。ライフバーから複雑なアプリケーションまでなんでも作れるようにたくさんあります。Godotエディタそのものもコントロール・ノードを用いて作られています。コントロールノードは、コントロールノード同士で上手く機能するために一意のプロパティを持ちます。Node2Dやスプライトといった他のヴィジュアルノードはそのような特徴を持ちません。UI作成を楽するためには可能な限りコントロールノードを用いたほうが良いでしょう。境界矩形フォーカスと、フォーカスの周辺サイズフラグマージンオプションのUIテーマコントロールノードの基本を理解すると、そこから派生するすべてのノードを学習する時間が少なくなります。一般的な5つのUI要素¶Godotには多数のコントロールノードが付属しています。それらの多くは、エディタプラグインやアプリケーションを構築するのを助けるために用意されています。ほとんどのゲームでは、必要なUI要素は5種類で、コンテナは多くありません。テクスチャや画像をUI内に表示します。Spriteノードと同じように見えますが、しかし複数のスケーリング・モードが用意されています。``Expand``プロパティがオンのときにのみテクスチャを長方形の境界まで拡縮します。それ以外では``Keep``モードと同じ動作をします。後方互換のため、これがデフォルトのモードになっています。``Scale``は、テクスチャを長方形の境界に合わせて拡縮します。``Tile``は、拡縮させる代わりに、テクスチャを繰り返して並べます。Centered``は、強制的にテクスチャを本来のサイズのままにし、前者はフレームの左上に、後者は中央に表示します。テクスチャを拡縮しますが、しかし元のアスペクト比は保ったままにします。前者はフレームの左上、後者は中央に表示されます。Centered``と同じように動作しますが、しかし余白の部分を境界線に合わせる一方、はみ出た部分は除いて表示します。Spriteノードと同じく、TextureRectの色は調節できます。``Modulate``プロパティをクリックして、カラーピッカーを使用してください。赤で変調されたTextureRectTextureButton¶TextureButtonはTextureRectと似ていますが、ボタンの状態ごとに1つずつ、合計5つのテクスチャスロットがある点が異なります。通常は、Normal、Pressed、Hoverの各テクスチャを使用します。Focusedは、インタフェースがキーボードの入力を監視する場合に便利です。6番目のイメージスロットであるクリックマスクを使用すると、2ビットの純粋な白黒イメージを使用してクリック可能領域を定義できます。Buttonセクションには、ボタンの動作を変更するチェックボックスがいくつかあります。オンの場合、ボタンを押すとアクティブ状態と通常状態が切り替わります。選択すると、デフォルトで無効になります。テクスチャが使用されます。TextureButtonには、テクスチャフレームと共通するプロパティがいくつかあります。モードを使用してスケール動作を変更したりできます。TextureButtonとその5つのテクスチャスロットTextureProgress¶TextureProgressは、最大3つのスプライトをレイヤ化してプログレスバーを作成します。UnderテクスチャとOverテクスチャはProgressテクスチャを挟んでおり、バーの値を表示します。プロパティでゲージの範囲を制限できます。バーをアニメーションさせるには、Rangeセクションを見る必要があるでしょう。プロパティを設定してください。キャラクターの最大のライフに設定する必要があるでしょう。バーを更新するためには、Value``プロパティ変更してください。40%の``Progress``テクスチャが現れ、残りの60%は隠れたままになります。スクリーンにテキストを表示します。インスペクタのLabelセクションで全てのプロパティを確認できるでしょう。``Text``プロパティでテキストを書き、もしテキストボックスの大きさを重視しないならAutowrapにチェックを入れてください。Autowrapがオフのとき、ノードを拡大することはできないでしょう。AlignとValignを用いることでそれぞれ横方向と縦方向に整列させることができます。3行と3列に分割されたテクスチャを受け取ります。中央と横のタイルは拡大されますが、隅のタイルは拡大されません。パネルやダイアログボックスや拡大可能なUI用の背景を作るさいに便利です。つのワークフローがあります:UI要素をスケールして配置するコンテナノードが多数あります。それらは子を制御します。反対側には、レイアウトメニューがあります。これは、親のUI要素を固定、配置、およびサイズ変更するのに役立ちます。2つのアプローチはいつも相性が良いわけではありません。コンテナは子ノードを操作し、それらのレイアウトメニューを使えないからです。それぞれのコンテナは特定の効果を持ち、操作画面にたどり着くまでにいくつかのノードをたどらなければならないかもしれません。レイアウトアプローチでは子ノードの下の画面から行うことができます。シーンに追加のコンテナを挿入しないなら、見通しのよい階層を構成できるでしょう。縦、横、グリッド等にアイテムを配置することは難しくなるでしょう。ゲームやツールに合わせてUIを作成すると、それぞれの状況に最も適したものに対する感覚が高まります。アンカーを使用してUI要素を正確に配置する¶コントロールノードには位置とサイズがありますが、アンカーと余白もあります。原点または参照点を定義します。余白の基準点を変更するには、4つのアンカーのいずれかを変更します。他のプロパティと同じく、4個あるアンカーポイントをインスペクタで編集することもできますが、最適な方法ではありません。コントロールノードを選択すると、ビューポートの上にあるツールバーに『レイアウト』メニューが現れます。インスペクタに4個あるプロパティの代わりに、このアイコン付きのリストから選べば、一発ですべてのアンカーを設定できます。『レイアウト』メニューは、コントロールノードを選択したときにのみ出てきます。各アンカーは0から1の間の値です。左アンカーと上端アンカーの場合、値0は余白なしでノードのエッジが親の左端と上端に位置合わせされることを意味します。右端と下端の場合、値が1の場合、親コンテナーの右端と下端に位置合わせされます。余白はアンカー位置(ピクセル単位)を表し、アンカーは親コンテナーのサイズに対して相対的です。余白はアンカー位置に対して相対的であり、アンカーに対して相対的です。実際には、コンテナの余白を更新することがよくありますアンカーによって余白が変化する¶コントロールノードを移動またはサイズ変更すると、余白が自動的に更新されます。これらは、コントロールノードのエッジからアンカーまでの距離を表します。ノードは常にコンテナ内に配置する必要があります。親がない場合、余白は、インスペクタのRectセクションで設定されたノード独自の境界矩形に対して相対的になります。Rect」アンカーに設定されたセンターコンテナの余白アンカーを変更するか、コンテナ内にコントロールノードをネストしてみてください。余白を手動で編集する必要はほとんどありません。あなたを助けるために常に最初にコンテナを見つけるようにしてください。Godotはあなたのためのすべての一般的なケースを解決するためにノードを持っています。MarginContainerを使用してください。VBoxContainerを使用してください。これらの詳細は下記をご覧ください。各コントロールノードにはサイズフラグがあります。UI要素のスケーリング方法をコンテナに指示します。「Fill」フラグをHorizontalまたはVerticalプロパティに追加すると、ノードのバウンディングボックスは可能な限りのスペースを使用しますが、兄弟を考慮してサイズを保持します。HBoxContainerに3つのTextureRectノードがあり、両方の軸に「Fill」フラグが設定されている場合、それぞれが使用可能なスペースの最大3分の1を使用しますが、それ以上は使用できません。コンテナがノードを引き継ぎ、自動的にサイズが変更されます。HBoxContainer内の3つのUI要素は、水平方向に整列します「Expand」フラグを使用すると、UI要素は可能な限りのスペースを使用して、兄弟要素をプッシュできます。そのバウンディングボックスは、親のエッジに向かって、または別のUIノードによってブロックされるまで大きくなります。上記と同じ例ですが、中央ノードには「Expand」サイズフラグがありますサイズタグの効果はインターフェイスの設定方法によって大きく異なるため、サイズタグを理解するにはある程度の練習が必要です。コンテナを使用してコントロールノードを自動的に配置する¶コンテナは、子になったコントロールノード(他のコンテナも可)をすべて、自動的に縦や横などに並べます。インターフェースの周りにパディングを追加したり、ノードを四角形の中央に配置するのに使えます。組み込みのコンテナは、すべてエディタの中で更新されるので、すぐに反映された結果を見ることができます。コンテナには、UI要素の配置方法を制御するための特別なプロパティがいくつかあります。変更するには、インスペクタのカスタム定数セクションに移動します。有用な5つのコンテナ¶ツールを構築する場合は、すべてのコンテナが必要になる場合があります。ほとんどのゲームでは、一握りで十分です:MarginContainer、UIの一部に余白を追加しますCenterContainerは、その子を境界ボックスに中央に配置しますVboxContainerおよびHboxContainer、行または列にUI要素を配置しますGridContainer、グリッドのようなパターンでコントロールノードを配置しますCenterContainerは、すべての子をバウンディング矩形の内側にセンタリングします。これは、オプションをビューポートの中央に表示しておきたい場合に、タイトルスクリーンでよく使用する方法です。すべてを中央に配置するため、1つのコンテナを内部にネストしたい場合があります。代わりにテクスチャとボタンを使用すると、それらが重なってしまいます。CenterContainerのアクション。ライフバーは、親コンテナ内に配置されます。MarginContainerは、子ノードの任意の側に余白を追加します。ビューポート全体を含むMarginContainerを追加して、ウィンドウのエッジとUIの間に分離を追加します。対応する値のボックスをクリックし、任意の数を入力すると、自動的に有効になります。40ピクセルのマージンを追加しますボックスコンテナには、VBoxContainerとHBoxContainerの2つがあります。クラスなので追加できませんが、垂直および水平のボックスコンテナを使用できます。ノードは行または列に配置されます。ショップ内のアイテムを並べて作成したり、さまざまなサイズの行と列を持つ複雑なグリッドを構築したりするために使用します。HBoxContainerはUI要素を水平方向に揃えますVBoxContainerは、子を自動的に列に配置し、それらを次々に置きます。分割パラメータを使用すると、子の間にギャップが残ります。HBoxContainerは、UI要素を一列に並べます。メソッドが追加されています。GridContainerを使用すると、グリッドのようなパターンでUI要素を配置できます。列の数のみを制御でき、子の数に基づいて行数を単独で設定します。3つの子を追加すると、4行になります。テクスチャとボタンを追加すると、新しい行が作成されます。ボックスコンテナと同様に、行と列の間の垂直方向と水平方向の分離をそれぞれ設定する2つのプロパティがあります。2つの列を持つGridContainer。各列のサイズは自動的に設定されます。GodotのUIシステムは複雑で、さらに多くの機能があります。高度なインターフェースをデザインする方法を学ぶには、ドキュメントのGUIの節へと進んでください。