UE4 C++ Widget的NativeConstruct 与 NativePreConstruct

构造函数

由于Widget是由UE的反射系统创建的,其生命周期由UE引擎管理,所以并不存在构造函数,UE为Widget类定义了两个虚函数NativeConstruct 与 NativePreConstruct来充当构造函数的作用。而这两个函数的调用都必须在Widget被实例化之后才能进行调用

如何在Widget中获取角色

在蓝图节点中我们可以通过GetPlayerPawn来获得

而在C++代码中,需要传入一个UObject的实参。由于Widget是存在与用户界面而不是游戏逻辑。所以一般采用获取PlayerController来获取角色,当然如果使用的是HUD为父类就不用这么麻烦了

	AXPlayerController* PlayerController = GetOwningPlayer<AXPlayerController>();
	if (PlayerController)
	{
		// 获取PlayerController当前控制的Pawn
		MyPawn = Cast<AXPawn>(PlayerController->GetPawn());
	}
	if (MyPawn == nullptr)
	{
		UE_LOG(LogTemp, Warning, TEXT("No Pawn!!!!!!!"));
		return;
	}

NativeConstruct 与 NativePreConstruct的调用先后顺序

NativePreConstruct先调用

当一个Widget类对象作为另外一个Widget的成员变量时,NativeConstruct 与 NativePreConstruct的调用顺序

XDebugMenuWidget类中有XCameraDebugWidget对象
XCameraDebugWidget类中有XSpinwithNameWidget对象
可以看到会从“子类”向“父类”依次创建

作者:XTG111

出处:https://www.cnblogs.com/XTG111/p/18104453

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   XTG111  阅读(212)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
more_horiz
keyboard_arrow_up light_mode palette
选择主题
点击右上角即可分享
微信分享提示