UE5中C++对蓝图类的软引用方法

本文介绍了UnrealEngine中静态方法、软引用(包括FSoftObjectPath和FSoftClassPath)以及动态引用(如LoadObject和LoadClass)的使用,重点讲解了如何通过这些技术动态创建UStaticMeshComponent。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

静态方法:

对资源的软引用:

FSoftObjectPath MeshSoftRef("StaticMesh'/Game/StarterContent/Props/SM_Door.SM_Door'");
 

对类的软引用:

FSoftClassPath bpwidgetcalss(TEXT("Blueprint'/Game/bp_widget.bp_widget_C'"));
实例:
FSoftClassPath bpwidgetcalss(TEXT("Blueprint'/Game/bp_widget.bp_widget_C'"));
UClass* widgetclass = bpwidgetcalss.TryLoadClass<UUserWidget>();
bpwidget = widgetclass;

使用ConstructorHelpers::FClassFinder的方法可以找到特定的蓝图类

ConstructorHelpers::FClassFinder<AActor> MyCat(TEXT("Blueprint'/Game/bp/bp_Cat.bp_Cat_C'"));
TSubclassOf<AActor> ChildType;
ChildType = MyCat.Class;
 

使用LoadClass函数可以加载一个蓝图类

UClass* StaticMeshClass = LoadClass<AActor>(nullptr, TEXT("Blueprint'/Game/Test/BP_StaticMesh.BP_StaticMesh_C'"));
 

动态引用的方法:

LoadObject<T>的函数可以加载一个资源

UStaticMesh* StaticMesh = LoadObject<UStaticMesh>(nullptr, TEXT("StaticMesh'/Game/StarterContent/Props/SM_Door.SM_Door'"));
 

LoadClass<T>的函数可以加载一个蓝图类

UClass* TestClass = LoadClass<AActor>(nullptr, TEXT("Blueprint'/Game/Test/BP_Test.BP_Test_C'"));

动态的软引用方法:

FSoftObjectPath可以动态软引用一个资源

FSoftObjectPath MeshSoftRef("StaticMesh'/Game/StarterContent/Props/SM_Door.SM_Door'");

FSoftClassPath可以动态软引用一个蓝图类

FSoftClassPath ClassSoftRef("Blueprint'/Game/Blueprint/BP_Test.BP_Test_C'");
 

TSoftObjectPtr<T>可以对任何UObject的子类进行软引用

TSoftObjectPtr<UTexture2D> TextureSoftRef = TSoftObjectPtr<UTexture2D>(FSoftObjectPath("Texture2D'/Game/Textures/MyTexture.MyTexture'"));
 

动态创建组件的方法:

UStaticMeshComponent* SMC = NewObject<UStaticMeshComponent>(this);
SMC->SetStaticMesh(SM);
SMC->AttachToComponent(GetRootComponent(), FAttachmentTransformRules::KeepRelativeTransform);
SMC->RegisterComponent();
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我救我自己

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值