1. Create Widget
//创建Widget方法一:CreateWidget
//UXXXWidgetClass是UClass
UXXXWidget* XWidget = CreateWidget< UXXXWidget >(GetWorld(),UXXXWidgetClass);
//创建Widget方法二 : 通过WidgetThree创建组件,只能在Widget内部创建
UImage* DynImage = WidgetTree->ConstructWidget<UImage>(UImage::StaticClass());
2, Get UI controls
//获取方式一:强转子集
UCanvasPanel* RootPanel = Cast<UCanvasPanel>(GetRootWidget());
if (RootPanel)
{
UImage* BGImage = Cast<UImage>(RootPanel->GetChildAt(0));
}
//获取控件方法二: GetWidgetFromName
UButton* ButtonTwo = (UButton*)GetWidgetFromName(TEXT("ButtonTwo"));
//获取控件方法三 : 反射绑定, 变量名和UMG里的控件名要一致
UPROPERTY(Meta = (BindWidget))
UButton* ButtonOne;
3. Bind button events
//绑定按钮事件方法一 : __Internal_AddDynamic
ButtonOne->OnClicked.__Internal_AddDynamic(this, &UFWAffectWidget::ButtonOneEvent, FName("ButtonOneEvent"));
//绑定按钮事件方法二 : FScriptDelegate
FScriptDelegate ButTwoDel;
ButTwoDel.BindUFunction(this, "ButtonTwoEvent");
ButtonTwo->OnReleased.Add(ButTwoDel);
//绑定按钮方法三 : BlueprintCallable函数
4. Add and delete components
//添加组件
UUserWidget->AddChild***
//移除组件
UUserWidget ->RemoveChild(DynImage);
UUserWidget ->RemoveFromParent();