1、...C++获取UMG的属性

1.1、第一种方法:通过名称获取控件。

void UMyUserWidget::NativeConstruct()

{

Super::NativeConstruct();

//通过名字,获取蓝图控件中的按钮引用。

CtnClic = Cast(GetWidgetFromName(TEXT("Button_44")));

if (CtnClic)

{

//绑定到自定义函数

CtnClic->OnClicked.AddDynamic(this, &UMyUserWidget::TestButtonClick);

}

}

void UMyUserWidget::TestButtonClick()

{

//测试代码

UE_LOG(LogTemp, Log, TEXT("dddddd"));

//获取预定义属性后,还要转化为标准属性才能进行操作

UCanvasPanelSlot* Slot = Cast(CtnClic->Slot);

if (Slot)

{

}

}

优点:可以拿到对象引用,调用系统预定义好的事件(函数)。

缺点:无法拿到在蓝图中创建的属性,可以C++创建控件父类,属性也在C++中定义,这样的话可以拿到。

1.2、第二种方法:通过宏绑定控件(控件类型和名称必须和蓝图添加的一致,并且在蓝图中添加同名同类型的控件)

步骤1:在C++中创建指针

//第二种方法 这两个标记必须要添加!!!

UPROPERTY(BlueprintReadWrite, meta=(BindWidget))

class UButton* TestButton2;

步骤2:在蓝图中创建对象,名字为C++中的变量名。(相当于在C++中声明,在蓝图中进行定义)

参考文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: