Library)を使わないのですかなぜGodotは例外処理を使わないのですか?GodotがRTTI(実行時型情報)を強制しないのはなぜですか?GodotがユーザーにDoD(データ指向設計)の実装を強制しないのはなぜですか?Godotの開発をサポートしたり、貢献したりするにはどうすればいいですか?誰がGodotで働いていますか。概要¶このチュートリアルでは、GDScriptをより効率的に使用する方法を簡単に紹介します。この言語固有の一般的なケースに焦点を当てていますが、動的型付け言語に関する多くの情報も扱っています。けの長所と短所¶GDScriptは動的型付け言語です。その主な利点は以下のとおりです:言語はシンプルで習得が容易です。ほとんどのコードは、手間をかけずに素早く作成および変更できます。書かれたコードが少なければ少ないほど、エラーや修正の誤りが少なくなります。コードがより読みやすいです(混乱が少なくなります)。動作テスト時にコンパイルは必要ありません。ランタイムは小さいです。ダック・タイピングとその性質による多型。主な欠点は次のとおりです:静的型付き言語よりもパフォーマンスが劣ります。リファクタリングするのがより難しい(シンボルは辿ることができない)静的型付け言語のコンパイル時に通常検出されるエラーの中には、コードの実行中にのみ発生するものがあります(式の構文解析がより厳密なため)。コード補完の柔軟性が低い(一部の変数型は実行時にのみ認識されます)。GDScriptはゲームを迅速かつ効率的に作成するために設計された組み合わせです。++を使用する場合もあります。GDScriptでゲームの大部分を作成し、パフォーマンスの向上が必要な部分にC++の一部を追加することができます。動的に型付けされた言語の変数はすべて「Variant型」のようなものです。タイプは固定されず、割り当てによってのみ変更されます。関数も動的な性質を持っているため、次のように異なる引数で呼び出すことができます。Validポインタと参照:¶CやC++(そしてある程度はJavaとC#)などの静的言語では、変数と、変数へのポインタまたは参照とは区別されます。後者では、元のオブジェクトへの参照を渡すことで、他の関数によってオブジェクトを変更できます。C#やJavaでは、組み込み型(int、float、場合によってはString)でないものはすべて常にポインタまたは参照です。参照も自動的にガベージコレクションされるため、使用されなくなると削除されます。動的型付け言語もこのメモリー・モデルを使用する傾向があります。deletedGDScriptでは、基本型(int、float、string、およびベクトル型)のみが値によって関数に渡されます(値はコピーされます)。それ以外のもの(インスタンス、配列、辞書など)は参照として渡されます。手動で継承している場合は手動のメモリ管理も可能です。動的型付け言語の配列は、内部に多くの異なるデータ型を混在させることができ、常に動的です(いつでもサイズ変更可能)。辞書は動的型付け言語における強力なツールです。静的型付け言語(C++やC#など)出身のプログラマーの多くは、その存在を無視し、不必要に彼らの生活を困難にしています。このデータ型は通常、そのような言語には存在しないか限定された形でのみ存在しています。辞書は、キーまたは値として使用されるデータ型を完全に無視して、任意の値を他の任意の値にマップできます。一般に信じられていることとは異なり、ハッシュテーブルを使用して実装できるため効率的です。実際、これらは非常に効率的なため、一部の言語では辞書として配列を実装することもあります。Removalほとんどの場合、辞書を使用すると2次元配列をより簡単に実装できます。3))辞書は、データマークアップまたはクイック構造としても使用できます。print(s)コンテナのデータ型(配列と辞書)は反復可能です。関数をオーバーライドして、カスタムイテレータを作成できます。イテレータの状態を必ずリセットしてください。リセットしないと、カスタムイテレータを使用するネストされたforループが期待どおりに動作しません。静的型付け言語から動的型付け言語に移行する際に理解するのが最も難しい概念の1つは、ダック・タイピングです。ダック・タイピングを使用すると、コード全体の設計がはるかに簡単かつ簡単になりますが、その仕組みが明確ではありません。例として、大きな岩がトンネルを流れ落ちて、途中ですべてを壊している状況を想像してください。entity->smash();}このように、岩石によって破壊されることができるすべてはSmashableを継承しなければならないでしょう。キャラクター、敵、家具、小さな岩がすべて粉砕可能であれば、それらはSmashableクラスから継承する必要があり、おそらく複数の継承が必要になります。多重継承が望ましくない場合は、Entityのような共通クラスを継承する必要があります。Entityに追加するのは、それらのうちのいくつかを粉砕できる場合に限り、それほどエレガントではありません。動的型付け言語ではこれは問題になりません。関数を定義するだけで済みます。継承、基本クラスなどを考慮する必要はありません。object.smash()以上です。大きな岩に当たったオブジェクトがsmash()メソッドを持っていれば、それが呼ばれます。継承や多型は必要ありません。動的に型付けされた言語は、それが継承しているものやクラスの型ではなく、目的のメソッドやメンバを持つインスタンスだけを扱います。ダック・タイピングの定義はこれをより明確にするはずです:「アヒルのように歩きアヒルのように泳ぎアヒルのように鳴く鳥を見たら、私はその鳥をアヒルと呼びます」この場合は、次のように変換されます:「オブジェクトが壊れる可能性がある場合は、それが何であるかは気にしないで、単にそれを壊してください。」はい、代わりにHulkタイピングと呼ぶべきですね。ヒットしたオブジェクトがsmash()関数を持たない可能性があります。object.smash()そして、その方法を単純に定義すれば、岩に触れるものは何でも砕くことができます。