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

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

相关推荐
中屹指纹浏览器3 分钟前
2026浏览器指纹检测技术演进与多账号反检测实战策略
经验分享·笔记
feng_you_ying_li4 分钟前
C++11,{}的初始化情况与左右值及其引用
开发语言·数据结构·c++
小樱花的樱花40 分钟前
打造高效记事本:UI设计到功能实现
开发语言·c++·qt·ui
独小乐1 小时前
012.整体框架适配SDRAM|千篇笔记实现嵌入式全栈/裸机篇
c语言·汇编·笔记·单片机·嵌入式硬件·arm·gnu
GHL2842710901 小时前
Qwen-Agent 内置RAG学习
学习·ai
Mabnus1 小时前
免疫治疗靶点FCRL5
学习
零二年的冬1 小时前
epoll详解
java·linux·开发语言·c++·链表
卡布叻_星星1 小时前
AI大模型之采用DeepSeek-Coder:6.7b + Ollama + Continue离线部署
笔记
wb1891 小时前
NoSQL数据库Redis集群重习
数据库·redis·笔记·云计算·nosql
坚持编程的菜鸟1 小时前
The Blocks Problem
数据结构·c++·算法