最初のパラメータは、再びハンドルポインタです。認識される関数の名前です。列挙型を参照してください)。番目(最後)のパラメーターは、メソッドが呼び出されたときに呼び出す関数の説明です。記述には、関数自体への関数ポインターが最初のフィールドとして含まれています。これらの構造体の他の2つのフィールドは、メソッドごとのユーザーデータを指定するためのものです。引数として渡されます。クラスの異なるメソッドで再利用する場合に便利です。フィールドにはそのメモリを解放する関数へのポインタを含めることができます。このフリー関数は、スクリプト自体(インスタンスではありません!)がアンロードされると呼び出されます(つまり、通常はライブラリのアンロード時に)。それでは、オブジェクトの機能に関する作業を始めましょう。GDNativeクラスのインスタンスのメンバーデータを格納するために使用する構造体を定義します。user_data_struct;次に、コンストラクタを定義します。コンストラクタで行うことは、構造体にメモリを割り当て、そのメモリにデータを書き込むことだけです。ここではGodotのメモリ関数を使ってメモリを追跡し、新しい構造体へのポインタを返すことに注意してください。このポインタは、複数のオブジェクトがインスタンス化された場合に、インスタンスIDとして機能します。いうパラメータとしてオブジェクトに関連する関数のいずれかに渡され、インスタンスの識別とメンバーデータへのアクセスの両方に使用できます。user_data;}オブジェクトに対してGodotが実行され、インスタンスのメンバデータが解放されると、デストラクタが呼び出されます。データは常にバリアント型(Variant)として送受信されるため、文字列のデータを返すには、まずCの文字列をGodotの文字列オブジェクトに変換し、次にその文字列オブジェクトを戻り値のバリアントにコピーする必要があります。ret;}文字列はGodotではヒープに割り当てられるため、そのメモリを解放するデストラクタがあります。いう名前が付けられます。バリアントが文字列で作成されると、その文字列を参照します。元の文字列を「破棄」して参照カウントを減らすことができます。しないと、参照カウントがゼロにならず、メモリの割り当てが解除されないため、文字列のメモリがリークします。返されたバリアントは、Godotによって自動的に破棄されます。注釈より複雑な操作では、どの値の割り当てを解放するべきなのかそれとも保持するべきなのか、混乱しないように追跡する必要があります。