1、...C++获取UMG的属性
- void UMyUserWidget::NativeConstruct()
- {
- Super::NativeConstruct();
-
- //通过名字,获取蓝图控件中的按钮引用。
- CtnClic = Cast<UButton>(GetWidgetFromName(TEXT("Button_44")));
- if (CtnClic)
- {
-
- //绑定到自定义函数
- CtnClic->OnClicked.AddDynamic(this, &UMyUserWidget::TestButtonClick);
- }
- }
-
- void UMyUserWidget::TestButtonClick()
- {
- //测试代码
- UE_LOG(LogTemp, Log, TEXT("dddddd"));
-
- //获取预定义属性后,还要转化为标准属性才能进行操作
- UCanvasPanelSlot* Slot = Cast<UCanvasPanelSlot>(CtnClic->Slot);
- if (Slot)
- {
-
- }
- }
优点:可以拿到对象引用,调用系统预定义好的事件(函数)。
缺点:无法拿到在蓝图中创建的属性,可以C++创建控件父类,属性也在C++中定义,这样的话可以拿到。
步骤1:在C++中创建指针
- //第二种方法 这两个标记必须要添加!!!
- UPROPERTY(BlueprintReadWrite, meta=(BindWidget))
- class UButton* TestButton2;
步骤2:在蓝图中创建对象,名字为C++中的变量名。(相当于在C++中声明,在蓝图中进行定义)
