UE5 动态加载资源和类

cpp 复制代码
// Called when the game starts or when spawned
void AMyActor::BeginPlay()
{
	Super::BeginPlay();
	if (MyActor)
	{
		UE_LOG(LogTemp,Warning,TEXT("MyActor is %s"),*MyActor->GetName());
	}
	//动态加载资源
	UStaticMesh* MyTmpStaticMesh = LoadObject<UStaticMesh>(nullptr,TEXT("/Script/Engine.StaticMesh'/Game/StarterContent/Shapes/Shape_Pipe_180.Shape_Pipe_180'"));
	if (MyTmpStaticMesh)
	{
		MyMesh->SetStaticMesh(MyTmpStaticMesh);
	}
	//动态加载类资源
	UClass* MyTmpClass = LoadClass<AActor>(this, TEXT("/Script/Engine.Blueprint'/Game/StarterContent/Blueprints/Blueprint_WallSconce.Blueprint_WallSconce_C'"));
	if (MyTmpClass)
	{
		AActor* SpawnActor = GetWorld()->SpawnActor<AActor>(MyTmpClass,FVector::ZeroVector,FRotator::ZeroRotator);
	}
	
}

因为是动态加载,所以不用在构造的时候去加载。这里再BeginPlay里加载。

加载StaticMesh等资源,就使用LoadObject<UStaticMesh>(nullptr,TEXT("Copy Reference"))

加载类资源,比如蓝图Actor类

就使用LoadClass<AActor>(this,TEXT("Copy Reference"))

但是同样要在最后一个字母后+_C

TEXT("/Script/Engine.Blueprint'/Game/StarterContent/Blueprints/Blueprint_WallSconce.Blueprint_WallSconce_C'")

SetStaticMesh测试动态加载的模型是否能赋值

GetWorld()->SpawnActor<AActor>(UClass*,FVector::ZeroVector,FRotator::ZeroRotator);

使用生成物体的方式,测试类。

相关推荐
休息一下接着来几秒前
C++ 条件变量与线程通知机制:std::condition_variable
开发语言·c++·算法
爱学习的小邓同学1 分钟前
C++ --- new与delete
c++
田梓燊9 分钟前
数学复习笔记 14
笔记·线性代数·矩阵
努力学习的小廉24 分钟前
【C++】 —— 笔试刷题day_29
开发语言·c++·算法
_Jyuan_27 分钟前
尼康VR镜头防抖模式NORMAL和ACTIVE的区别(私人笔记)
经验分享·笔记·数码相机·相机
m0_6786933331 分钟前
深度学习笔记23-LSTM实现火灾预测(Tensorflow)
笔记·深度学习·lstm
ly_Enhs1 小时前
OCCT知识笔记之OCAF框架详解
笔记·occt知识笔记·occt知识点
六bring个六1 小时前
文件系统交互实现
开发语言·c++·qt·交互
小山菌2 小时前
mac中加载C++动态库文件
开发语言·c++·macos
疯狂学习GIS2 小时前
Windows配置VS Code详细流程
c++·学术工作效率