UE TSubclassOf

定义

TSubclassOf<ParentClassName> ChildClass_Ins

TSubclassOf 根据父类对象创建其子类实例。然后就可以再将创建的子类对象地址赋值给父类指针。一般用于在代码中创建蓝图子类实例。

具体使用场景例如:

1.Widget创建;Widget若全部使用代码来创建比较复杂,可先使用代码定义所需的空间变量,再派生蓝图类,完成界面编辑。

UPROPERTY(EditAnywhere, Category = "UserWidget")
TSubclassOf<class UCubeViewUIWidget> CubeViewUIWidget_BP;
/*
中间需指定CubeViewUIWidget_BP的定义类型
*/
UCubeViewUIWidget* CubeViewUIWidget;
CubeViewUIWidget = CreateWidget<UCubeViewUIWidget>(GetWorld(), CubeViewUIWidget_BP);

注意

使用TSubclassOf作为某一个类(Class1)的成员变量时,需要指定子类类型(派生类不唯一)。具体方法有两种:

  1. 在该成员变量暴露给蓝图可编辑,再将该类(Class1)派生出一个蓝图类,再在蓝图类默认值设置中设定CubeViewUIWidget_BP的值,如图:

 

  1. 不派生蓝图类,直接在代码中指定子类定位文件地址(需要创建实例的蓝图文件地址):
TSubclassOf<class UCubeViewUIWidget> CubeViewUIWidget_BP;
UCubeViewUIWidget* CubeViewUIWidget;
//从内容浏览器中加载类的定义
static ConstructorHelpers::FClassFinder<UCubeViewUIWidget> WidgetAsset(TEXT("Game/Widget_BP"));
	if (WidgetAsset.Succeeded())
	{
		/** Assign the class of the loaded asset to the WigetClass variable, which is a "subclass" of UUserWidget : Which our asset class is */
		CubeViewUIWidget_BP = WidgetAsset.Class;
	}
CubeViewUIWidget = CreateWidget<UCubeViewUIWidget>(GetWorld(), CubeViewUIWidget_BP);

其中:TEXT("Game/Widget_BP")为内容浏览器中的蓝图文件的位置,可右击文件<复制引用>获取。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值