引擎版本为4.24
第一步:写入蓝图类的路径
//写路径
FString WidgetClassLoadPath = FString(TEXT("/Game/Project/UI/WBP_StoreUI.WBP_StoreUI_C"));//一定要加这个后缀名
第二步:获取到该类
//获取类
UClass* Widget = LoadClass<UUserWidget>(NULL, *WidgetClassLoadPath);
这里使用的LoadClass为动态加载类的方法,可以程序运行之后执行,也就是说可以放在Begin或之后的函数中执行。
第三步:创建一个Widget蓝图控件类的对象,用于后面的实际操作
//创建一个widget控件,UStoreUI为继承自UUserWidget的控件,实现了一个SetDataTable方法
UStoreUI* VendingMachineUI = CreateWidget<UStoreUI>(GetWorld(), Widget);
到这里你便可以直接调用UStoreUI中的方法了。
//设置表格
VendingMachineUI->SetDataTable(ProductTable);
也可以操纵该WIdget控件对象是否加入视口当中。
//加入视口
VendingMachineUI->AddToViewport();
//从视口中删除
VendingMachineUI->RemoveFromViewport();
附上继承自UUserWidget类的StoreUI类。
#pragma once
#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "StoreUI.generated.h"
UCLASS()
class TEST_2_API UStoreUI : public UUserWidget
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable)
virtual void SetDataTable(class UDataTable* Table);//设置StoreUI中的UDataTable变量
//商品表格
UPROPERTY(VisibleAnywhere,BlueprintReadWrite,Category="Data")
class UDataTable* ProductTable;
};