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);

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

相关推荐
知识分享小能手1 分钟前
PostgreSQL 入门学习教程,从入门到精通,PostgreSQL 16 数据备份与还原详解 —语法、案例与实战(16)
数据库·学习·postgresql
星幻元宇VR1 分钟前
VR科普学习一体机,在学校教育的应用前景
科技·学习·安全·vr·虚拟现实
猫吻鱼1 分钟前
【笔记02】【Reactor 响应式编程】
笔记
灰色小旋风2 分钟前
力扣第九题C++回文数
c++·算法·leetcode
庭前云落3 分钟前
从零开始的OpenZeppelin学习 1| 安装、使用
学习·区块链
实名上网宋凯宣5 分钟前
科技文献检索及利用(第一周笔记)
笔记·科技·图书馆学·科技文献检索及利用
四谎真好看6 分钟前
Redis学习笔记(实战篇1)
redis·笔记·学习·学习笔记
清空mega6 分钟前
动手学深度学习(李沐)笔记:Softmax 回归简洁实现(PyTorch 版)
笔记·深度学习·回归
deng-c-f14 分钟前
Linux C/C++ 学习日记(73):Kafka(一):基本介绍
分布式·学习·kafka
低调小一18 分钟前
OpenClaw 模型配置与火山 Coding Plan 支持清单(实践笔记)
java·前端·笔记·openclaw