蓝图原生化nativization功能的一个bug

刚刚发现一个nativization编译的一个bug:当原生化蓝图调用一个蓝图函数库中的函数时,如果这个函数返回一个整数,那么打包后的项目所不能得到这个返回值,实际得到的是0。看生成的C++代码发现,这个蓝图函数库函数C++代码如下:
struct FUnconvertedWrapper__UBlueTest_C__pf2222656877 : public FUnconvertedWrapper
{
FUnconvertedWrapper__UBlueTest_C__pf2222656877(const UBlueprintFunctionLibrary* __InObject) : FUnconvertedWrapper(__InObject){}
FORCENOINLINE void bpf__Test3__pf(UObject* bpp____WorldContext__pf, /out/ int32& bpp__count__pf)
{
static const FName __FunctionName(TEXT(“Test3”));
UFunction* __Function = __Object->FindFunctionChecked(FunctionName);
struct bpf__Test3__pf_Parameters
{
UObject* bpp____WorldContext__pf
;
int32 bpp__count__pf
;
};
bpf__Test3__pf_Parameters __Parameters { bpp____WorldContext__pf, bpp__count__pf };
__Object->ProcessEvent(__Function, &__Parameters);
}
};
bpf__Test3__pf_Parameters结构体里的bpp__count__pf_为传值状态,所以获取不到返回值。

测试发现这个bug在ue4.19和最新的4.21中都存在。
bug重现方法如下:

1.打开ue4.21编辑器,新建蓝图项目ThirdPerson模板并打开该项目。
2.在content下新建”蓝图函数宏库“并打开,新建测试函数Test3,添加返回值int型,并使其返回一个整数值(比如9).保存此函数库。图片1

3.打开ThirdPersonCharacter蓝图,在beginplay中增加调用蓝图库中的函数Test3,并printstring,完成后保存。图片2

4.将项目设置里的蓝图本地化方法改为exclusive,并设置ThirdPersonCharacter蓝图的nativization功能。
5.点击播放按钮,发现游戏运行后打印出值9。
6.打包本项目,运行后发现打印出值0。可见这个bug确实存在。

希望管理员能反馈一下这个bug,并期待能早点解决。

你好,我尝试重现了下这个步骤,发现没有问题。使用的是4.21.2,登录器更新的引擎版本。

我也是用的4.21.2,登陆器更新的引擎版本,发现打包develop模式和发行模式都有这个问题。我把工程文件传到百度云了,要不你下载下来看看?

bug还存在。需要注意的是上面步骤里只打开了ThirdPersonCharacter的nativization功能,没有打开那个蓝图函数宏库的nativization功能,如果打开这个宏库的原生化就不会出现这个bug了。