🤖
Godot4/GDExtension(C++) RefCountedされたクラスをインスタンス化するにはRef<T>を使う
Godot4のGDExtension(C++)にて、godot::RefCounted
を継承したクラスをインスタンス化する時は、godot::Ref<T>
で変数を宣言しgodot::Ref::instantiate()
にてインスタンス化します。
例
godot::ArrayMesh
をインスタンス化する例。godot::ArrayMesh
はgodot::RefCounted
を継承しています。
Ref<ArrayMesh> mesh;
mesh.instantiate();
// 好きに使う
mesh->add_surface_from_arrays(/* ... */);
出典
余談
こちらのドキュメントでは以下の通りインスタンス化するよう書かれています。[1]
Ref<MyReference> myref(memnew(MyReference));
しかしながら、私の環境では上の方法でインスタンス化するとメンバ関数を呼び出しした時点でSegmentation Faultになってしまいました。godot::Ref::instantiate()
はおおむね上と同じようなことをしているように見えるので、なぜうまく動かないのかは不明です。[2]
Discussion