UI控件的绑定方式
第一种方式
UPROPERTY(meta=(BindWidget))
UPROPERTY
中的 meta = (BindWidget)
标记的作用是将 C++ 类中的变量(widget成员变量)与蓝图中的UI元素(widget元素)进行绑定(例如 Button
、TextBlock
等)。
- 当在C++自定义的UUserWidget的子类中,创建一个成员
UButton*
,然后在编辑器派生一个蓝图UMG,在其中创建一个UI 控件(比如 Button),并将其命名为PointSmall
(名字与子类中的变量名必须相同,否则会无法编译该UMG),在C++ 代码中使用UPROPERTY
变量并加上meta = (BindWidget)
,UE会在运行时自动将蓝图中的Button 控件实例与 C++ 中的UButton* PointSmall
变量进行绑定。 - 当 UMG蓝图加载时,使用
BindWidget
标记的控件会自动被初始化并赋值给相应的 C++ 变量。
.h文件
UPROPERTY(meta=(BindWidget))
UButton* Btn_Register;
第二种方式
GetWidgetFromName(TEXT("Btn_Register"))
.h文件
UPROPERTY()
UButton* Btn_Register;
.cpp文件
void UMyUserWidget::NativeConstruct()
{
Super::NativeConstruct();
Btn_Register = Cast<UButton>(GetWidgetFromName(TEXT("Btn_Register")));
Btn_Register->OnClicked.AddDynamic(this,&UMyUserWidget::OnStartUIclickEvent);
}
UI中常用函数的重载
在C++中我们输入NativeXXX()
,可以找到这些我们熟悉的函数。
控制UMG组件的动画
UUserWidget* MyWidget = Cast<UUserWidget>(YourUMGReference);
if (MyWidget) {
UWidgetAnimation* Animation = MyWidget->GetAnimationCurrentTime(TEXT("YourAnimationName")); // 获取动画引用
if (Animation) {
MyWidget->PlayAnimation(Animation, 0.0f, 1, EUMGSequencePlayMode::Forward, 1.0f); // 播放动画
}
}