UE4+C++开发-(八十六)UMG界面有没有像unity一样的生命周期函数Start,OnEnable等?

WWDC25苹果开发武林圣火令挑战 5.4w人浏览 43人参与

在 Unreal Engine 的 UMG(用户界面框架)中,虽然没有与 Unity 完全一一对应的生命周期函数(如 StartOnEnable 等),但 UserWidget 类(UMG 界面的基类)提供了一系列类似功能的生命周期回调函数,用于处理界面的创建、显示、隐藏、销毁等状态变化

以下是 UMG 中常用的「生命周期相关函数」及与 Unity 的对应关系:

UMG 函数 / 事件(C++/ 蓝图)功能说明类似 Unity 的函数
Construct()(C++)
Event Construct(蓝图)
当 Widget 被创建并完成初始化时调用(此时所有子控件已创建)。常用于初始化数据、绑定事件、设置初始状态。Start()(初始化)
OnInitialized()(C++)在 Construct() 之后调用,确保所有子控件的布局和属性已完全初始化。接近 Awake()(更早的初始化)
OnVisibilityChanged(ESlateVisibility NewVisibility)(C++)
Event Visibility Changed(蓝图)
当 Widget 的可见性(显示 / 隐藏)发生变化时调用。通过 NewVisibility 判断状态。OnEnable()/OnDisable()
Tick(float DeltaTime)(C++)
Event Tick(蓝图)
每帧调用,用于处理界面的实时更新(如动画、数值刷新等)。需先在蓝图中开启「接收 Tick 事件」。Update()
Destruct()(C++)当 Widget 被销毁时调用,用于清理资源(如取消事件绑定、释放内存)。OnDestroy()
OnWidgetActivated()(C++)当 Widget 被激活(如成为焦点窗口)时调用(需手动触发或配合交互系统)。类似 OnEnable() 的激活逻辑
OnWidgetDeactivated()(C++)当 Widget 失去激活状态时调用。类似 OnDisable() 的失活逻辑

关键区别与注意点:

  1. 初始化顺序
    UMG 中 Construct() 是最常用的初始化入口,此时 Widget 及其子控件已完成创建,适合绑定按钮事件、设置初始文本等。而 OnInitialized() 会稍晚执行,确保布局计算完成(如尺寸、位置已确定)。

  2. 可见性与激活
    Unity 的 OnEnable/OnDisable 通常与物体的「激活状态(Active)」关联,而 UMG 中更常用「可见性(Visibility)」来控制界面显示 / 隐藏,因此 OnVisibilityChanged 是替代方案。若需处理「焦点激活」,可使用 OnWidgetActivated

  3. Tick 事件
    UMG 默认不开启 Tick,若需每帧更新,需在蓝图中勾选 Widget 的「接收 Tick 事件」(或在 C++ 中通过 SetIsTickableWhenPaused(true) 等函数手动开启)。

蓝图中如何使用?

在 UMG 蓝图编辑器中,这些生命周期事件可以直接通过「事件图表」调用:

  • 右键搜索 Event ConstructEvent TickEvent Visibility Changed 等事件,拖拽到图表中即可编写逻辑。

总结来说,UMG 虽然函数命名与 Unity 不同,但通过 ConstructOnVisibilityChangedTickDestruct 等函数,可以实现与 Unity 生命周期相似的功能,核心是根据界面的「创建 - 显示 - 更新 - 销毁」流程选择对应的回调函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值