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的调用先后顺序
当一个Widget类对象作为另外一个Widget的成员变量时,NativeConstruct 与 NativePreConstruct的调用顺序
XDebugMenuWidget类中有XCameraDebugWidget对象
XCameraDebugWidget类中有XSpinwithNameWidget对象
可以看到会从“子类”向“父类”依次创建
分类:
UE4_27
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本