UE4C++小知识(一)加载Widget的控件蓝图类

引擎版本为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;
};

你可能感兴趣的:(UE4,C++,ue4,c++,虚幻4)