1.加载UserWidget
void AUserWidgetContainer::CreateUserWidgetInstance(EUserWidget name, const FString path)
{
UClass* widgetClass = LoadClass(nullptr, path.GetCharArray().GetData());
UUserWidget* userWidget = CreateWidget(GetWorld(), widgetClass);
userWidgetMap.Emplace(name, userWidget);
}
2.创建Button
```cpp
void AUserWidgetContainer::ConstructButtonWidget(EUserWidget userWidget, FString widgetName, FVector2D location, FVector2D size, float angle)
{
UCanvasPanel* canvasPanel = (UCanvasPanel*)userWidgetMap[userWidget]->GetWidgetFromName(TEXT("WidgetName"));
UButton* widget = userWidgetMap[userWidget]->WidgetTree->ConstructWidget<UButton>(UButton::StaticClass(), FName(*widgetName));
canvasPanel->AddChild(widget);
UStructWidget* tempStructure = NewObject<UStructWidget>(GetTransientPackage(), UStructWidget::StaticClass());
tempStructure->widgetName = widgetName;
tempStructure->belong = userWidget;
Cast<UCanvasPanelSlot>(widget->Slot)->SetAlignment(FVector2D(0.5, 0.5));
Cast<UCanvasPanelSlot>(widget->Slot)->SetPosition(location);
Cast<UCanvasPanelSlot>(widget->Slot)->SetSize(size);
widget->SetRenderAngle(angle);
//设置button样式
FButtonStyle style;
FSlateBrush brush;
brush.SetResourceObject(StaticLoadObject(UTexture2D::StaticClass(), NULL, TEXT("Texture2D'/Game/Textures/texturename'")));
style.SetNormal(brush);
style.SetHovered(brush);
style.SetDisabled(brush);
style.SetPressed(brush);
widget->SetStyle(style);
}