Library)を使わないのですかなぜGodotは例外処理を使わないのですか?GodotがRTTI(実行時型情報)を強制しないのはなぜですか?GodotがユーザーにDoD(データ指向設計)の実装を強制しないのはなぜですか?Godotの開発をサポートしたり、貢献したりするにはどうすればいいですか?誰がGodotで働いていますか。3.0以前は、ゲームのスクリプトを作成するための唯一の選択肢はGDScriptを使用することだけでした。現在、Godotには4つの(そうです、4つも!)公式言語と、追加のスクリプト言語を動的に追加する機能があります!これは素晴らしいことです。提供される柔軟性が大きくなるからです。その反面、それぞれの言語をサポートする作業がより困難になります。Godotの「主要な」言語はGDScriptとVisualScriptです。それらを選択する主な理由は、Godotとの統合レベルが高いからです。これにより、開発作業がよりスムーズになります。どちらも洗練されたエディタと統合されています。++は別のIDEで編集する必要があります。++を使用してください。上記のように、GDScriptはGodotで使用されるメインの言語です。Godotとの高度な統合により、他の言語と比較していくつかの利点があります。シンプルでエレガントで、Lua、Python、Squirrelなどの他の言語のユーザーになじみがあるように設計されています。読み込みとコンパイルが非常に高速です。エディタの統合は、ノード、シグナル、および編集中のシーンに関連する他の多くの項目のコード補完を使用してくれるので作業するのが楽しいです。ベクトル型(ベクトル、幾何学変換など)が組み込まれており、線形代数を大量に使用する場合に効率的です。Lua、SquirrelなどのVMを避けた理由のひとつはスレッド処理に制限があるからです。ガベージコレクタを使用しないため、決定論によって多少の自動化(ほとんどのオブジェクトはいずれにしても参照としてカウントされる)を犠牲にします。その動的な性質により、より高いパフォーマンスが必要な場合には、エンジンを再コンパイルすることなく、C++のコード・セクション(経由GDNative)を簡単に最適化することができます。あなたがどの言語を使用するかをまだ決めておらず、プログラミング、特に動的型付け言語の経験があるなら、GDScriptを選んでください!ビジュアルスクリプト¶Godotは3.0から、ビジュアルスクリプトを提供しています。これは「ブロックと接続」言語の典型的な実装ですが、Godotの動作に適合しています。ビジュアルスクリプトは、プログラマ以外のユーザーや、ゲームデザイナーやアーティストなどの他のユーザーに、コードの一部を容易にアクセスさせたい経験豊富な開発者にとっても最適なツールです。プログラマがステートマシンやカスタム・ビジュアルノード・ワークフロー(対話システムなど)を構築するためにも使用できます。C#¶マイクロソフトのC#はゲーム開発者の間でお気に入りなので、公式サポートを追加しました。C#は、大量のコードが書かれた成熟した言語であり、マイクロソフトからの寛大な寄付のおかげでサポートが追加されました。ガベージコレクタに注意する必要がありますが、パフォーマンスと使いやすさの間には優れたトレードオフがあります。.NETランタイムを使用するため、理論的には、サードパーティの.NETライブラリまたはフレームワークをGodotのスクリプトに使用できます。F#、Boo、ClojureCLRなどの共通言語インフラストラクチャに準拠したプログラミング言語も使用できます。実際には、C#が公式にサポートされている唯一の.NETオプションです。最後に、3.0リリースの最も輝かしい追加の1つ:GDNativeを使用すると、Godotを再コンパイル(または再起動)しなくてもC++でスクリプトを作成できます。Bridgeを使用しているため、任意のC++バージョンを使用することができ、生成された共有ライブラリ用のコンパイラブランドとバージョンが混在していても完全に機能します。この言語はパフォーマンスに最適な選択肢であり、ゲーム全体で使用する必要はありません。Scriptで作成できるためです。APIに似ているため、明確で使いやすいです。GDNativeインターフェイスを通じて(C++以外の)より多くの言語を利用できますが、正式なサポートはありません。シーンを設定し、ボタンを押す事でラベルを更新してみます。これは、次のことを示します:スクリプトを作成し、ノードにアタッチします。シーン内の他のノードにアクセスできるスクリプトを作成します。次へ進む前に、GDScriptを必ずお読みください。シンプルに設計された言語であり、リファレンスは短いため、概要を把握するのに数分しかかかりません。ツリーは次のようになります:2Dエディタを使用して、ボタンとラベルを下の画像のように配置およびサイズ変更します。タブからテキストを設定できます。スクリプトの追加¶パネルノードを右クリックし、コンテキストメニューから「スクリプトをアタッチ」を選択します:スクリプト作成ダイアログが表示されます。このダイアログボックスを使用すると、スクリプトの言語、クラス名、およびその他の関連するオプションを設定できます。GDScriptではファイル自身がクラスを表します。そのためクラス名のフィールドは編集できません。フィールドには自動的に「Panel」が入力されます。スクリプトの目的は、パネルノードの機能を拡張することです。最後に、スクリプトのパス名を入力し、「作成」を選択します:その後、スクリプトが作成され、ノードに追加されます。これは、シーンタブのノードの横にある「スクリプトを開く」アイコンと、インスペクタの下のスクリプトプロパティで表示されます:スクリプトを編集するには、上の画像で強調表示されている2つのボタンのいずれかを選択します。これにより、スクリプトエディタにデフォルトのテンプレートが含まれて表示されます:テンプレートの内容はそれほど多くはありません。関数は、ノードとそのすべての子がアクティブなシーンに入ると呼び出されます。コンストラクタではありません。スクリプトの役割¶スクリプトは、ノードに動作を追加します。ノードの機能方法、およびノードが他のノード(子、親、兄弟など)とどのように相互作用するかを制御するために使用されます。スクリプトのローカルスコープはノードです。スクリプトはそのノードによって提供される関数を継承します。シグナルの処理¶シグナルは、特定の種類のアクションが発生したときに「出力」され、任意のスクリプトインスタンスの任意の関数に接続できます。シグナルは主にGUIノードで使用されますが、他のノードにもシグナルが含まれ、独自のスクリプトでカスタムシグナルを定義することもできます。このステップでは、「pressed」シグナルをカスタム関数に接続します。最初のパートは接続の形成で、2番目のパートはカスタム関数の定義です。エディタが提供するビジュアルインタフェースを使用する方法と、コードを使用する方法です。このチュートリアルの残りの部分ではコードを使用しますが、今後のためにエディタインターフェースがどのように機能するかについて説明します。シーンツリーでボタンノードを選択し、「ノード」タブを選択します。次に、「シグナル」が選択されていることを確認します。次に、「BaseButton」の下の「pressed()」を選択し、右下の「接続...」ボタンをクリックすると、接続作成ダイアログが開きます。ダイアログの上部には、シーン中のノードの一覧が表示されており、シグナルを発するノードの名前(今回はButton)が青色でハイライト表示されています。ここで「Panel」ノードを選択します。ダイアログの下部には、作成されるメソッドの名前が表示されます。これで、ビジュアルインターフェイスの使用方法に関するガイドは終了です。これはスクリプトのチュートリアルなので、学習のために、手動で行う方法に飛び込みましょう!これを実現するために、おそらくGodotプログラマーが最も使用する:Node.get_node()を導入します。この関数は、パスを使用して、スクリプトを持つノードに関連する、シーン内の任意の場所のノードを見つけます。下にあるすべてのものを削除します。スクリプトの残りの部分を手動で入力します。}}シーンを実行し、ボタンを押します。次の結果が得られます:あら、hello!と表示されました。最初のシーンのスクリプト作成、おめでとうございます。その直接の子を検索します。上記のコードでは、これはButtonがPanelの子でなければならないことを意味します。case.GetNode("Label/Button")また、ノードは型ではなく名前で参照される点に注意してください。接続ダイアログの右側のパネルは、接続された関数のパラメータに特定の値をバインドするためのものです。さまざまな型の値を追加および削除できます。パラメータを使用して、これも有効にします。メソッドをお読みください。