NewObject関数を使用すると例外が出る

こんにちは。

TextureRenderTarget2D.cpp内のConstructTexture2Dの実装を見てみると、内部でNewObjectをしており、それにInOuterが使われているようです。NewObjectのOuterにはデフォルト引数があり、その記述を真似するのが最も簡単な方法かと思います。つまり、

rt2d->ConstructTexture2D((UObject*)GetTransientPackage(),
                          FString(TEXT("MatTex")), RF_NoFlags);

これで例外が出ないことを確認しました。

または、BlueprintFunctionLibraryを用いたstatic関数として実装しているなら、world context objectを引数にとり、それをInOuterとして与えるのもよいかもしれません。次のように宣言すれば、worldContextObject_はBP上でピンが隠蔽されます(個人的にはこちらの方が好きです)。

UFUNCTION(BlueprintCallable, Category = WrappedOpenCV, meta = (HidePin = "worldContextObject_", DefaultToSelf = "worldContextObject_"))
static void ConvertMat(UObject* worldContextObject_, class UTextureRenderTarget2D* rt2d);