UE5 C++(九)— 静态、动态加载类和资源

news2025/3/16 19:27:04

文章目录

  • 前提
  • 静态加载类和资源
    • 静态加载资源
    • 静态加载类
  • 动态加载类和资源
    • 动态资源
    • 动态加载类

前提

有必要说一下,静态这块内容加载时我用UE5.2版本出现调用静态资源不是显示问题,修改后容易崩。所以,这里不建议5.2版本,直接用5.3,就不会出现这个问题。

导入初学者资源包
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

静态加载类和资源

静态加载资源

复制静态资源引用
在这里插入图片描述
/Script/Engine.StaticMesh’/Game/StarterContent/Shapes/Shape_Cone.Shape_Cone’

#pragma once

#include "CoreMinimal.h"
// 引入组件
#include "Components/SceneComponent.h"
#include "Components/StaticMeshComponent.h"
#include "Components/BoxComponent.h"
#include "Components/AudioComponent.h"
#include "Particles/ParticleSystemComponent.h"
#include "GameFramework/Actor.h"
#include "MyCustomActor.generated.h"

UCLASS()
class EXAMPLE_API AMyCustomActor : public AActor
{
	GENERATED_BODY()

public:
	// Sets default values for this actor's properties
	AMyCustomActor();

protected:
	// Called when the game starts or when spawned
	virtual void BeginPlay() override;

public:
	// Called every frame
	virtual void Tick(float DeltaTime) override;

	// 自定义组件
	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "MyScenet")
	USceneComponent *MySceneComponent;
	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "MyScene")
	UStaticMeshComponent *MyMeshComponent;
	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "MyScenet")
	UBoxComponent *MyBoxComponent;
	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "MyScene")
	UAudioComponent *MyAudioComponent;
	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "MyScene")
	UParticleSystemComponent *MyParticleSystemComponent;
};
#include "MyCustomActor.h"

// Sets default values
AMyCustomActor::AMyCustomActor()
{
	// Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;

	// 创建组件
	MySceneComponent = CreateDefaultSubobject<USceneComponent>(TEXT("CustomScene"));
	MyMeshComponent = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("CustomStaticMesh"));
	MyBoxComponent = CreateDefaultSubobject<UBoxComponent>(TEXT("CustomBox"));
	MyAudioComponent = CreateDefaultSubobject<UAudioComponent>(TEXT("CustomAudio"));
	MyParticleSystemComponent = CreateDefaultSubobject<UParticleSystemComponent>(TEXT("CustomParticleSystem"));

	// 把组件添加到根组件
	RootComponent = MySceneComponent;
	MyMeshComponent->SetupAttachment(MySceneComponent);
	MyBoxComponent->SetupAttachment(MySceneComponent);
	MyAudioComponent->SetupAttachment(MyBoxComponent);
	MyParticleSystemComponent->SetupAttachment(MySceneComponent);

	// 静态加载资源
	// 静态Mesh
	static ConstructorHelpers::FObjectFinder<UStaticMesh> TempStaticMesh(TEXT("/Script/Engine.StaticMesh'/Game/StarterContent/Shapes/Shape_Cone.Shape_Cone'"));
	MyMeshComponent->SetStaticMesh(TempStaticMesh.Object);
	// 粒子特效
	static ConstructorHelpers::FObjectFinder<UParticleSystem> TempParticleSystem(TEXT("/Script/Engine.ParticleSystem'/Game/StarterContent/Particles/P_Explosion.P_Explosion'"));
	MyParticleSystemComponent->SetTemplate(TempParticleSystem.Object);
	// 音频
	static ConstructorHelpers::FObjectFinder<USoundWave> TempSoundBase(TEXT("/Script/Engine.SoundWave'/Game/StarterContent/Audio/Explosion02.Explosion02'"));
	MyAudioComponent->SetSound(TempSoundBase.Object);
}

// Called when the game starts or when spawned
void AMyCustomActor::BeginPlay()
{
	Super::BeginPlay();
}

// Called every frame
void AMyCustomActor::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);
}

编译后,会显示引用上
在这里插入图片描述
然后想,创建蓝图类BP_MyCustomActor

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
到这里,都显示引用上。

静态加载类

	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "MyClasss")
	TSubclassOf<AActor> MyActorClass;

加载静态类时,在引用资源类的末尾需要加上 _C,否则编译时会报错

	// 静态加载类  加载静态类时,在引用资源类的末尾需要加上 _C,否则编译时会报错
	static ConstructorHelpers::FClassFinder<AActor> TempActorClass(TEXT("/Script/Engine.Blueprint'/Game/StarterContent/Blueprints/Blueprint_CeilingLight.Blueprint_CeilingLight_C'"));
	MyActorClass = TempActorClass.Class;
	UE_LOG(LogTemp, Warning, TEXT("MyActorClass is %s"), *MyActorClass->GetName());

编译后,创建蓝图,打开后打印日志
在这里插入图片描述

动态加载类和资源

动态资源

void AMyCustomActor::BeginPlay()
{
	Super::BeginPlay();
	// 动态加载资源
	UStaticMesh *TempStaticMesh = LoadObject<UStaticMesh>(nullptr, TEXT("/Script/Engine.StaticMesh'/Game/StarterContent/Shapes/Shape_NarrowCapsule.Shape_NarrowCapsule'"));

	if (TempStaticMesh)
	{
		MyMeshComponent->SetStaticMesh(TempStaticMesh);
	}
	else
	{
		UE_LOG(LogTemp, Warning, TEXT("TempStaticMesh is null"));
	}
}

编译后,创建蓝图拖到场景中,点击运行
在这里插入图片描述

动态加载类

void AMyCustomActor::BeginPlay()
{
	// 动态加载类
	UClass *TempActorClass = LoadObject<UClass>(this, TEXT("/Script/Engine.Blueprint'/Game/StarterContent/Blueprints/Blueprint_WallSconce.Blueprint_WallSconce_C'"));
	if (TempActorClass)
	{
		AActor *TempActor = GetWorld()->SpawnActor<AActor>(TempActorClass,FVector(0,0,0),FRotator(0,0,0));
		UE_LOG(LogTemp, Warning, TEXT("TempActorClass is %s"), *TempActorClass->GetName());
	}
	else
	{
		UE_LOG(LogTemp, Warning, TEXT("TempActorClass is null"));
	}
}

编译后,创建蓝图拖到场景中,点击运行
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1336600.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VS2005环境下编译C++报错

WinGenerateKey.obj : error LNK2011: 未链接预编译对象&#xff1b;映像可能不能运行 解决&#xff1a;连接器->输入&#xff0c;添加&#xff1a;..\WinGenerateKey\Debug\stdafx.obj 或者 ..\WinGenerateKey\Release\stdafx.obj 报错&#xff1a;fatal error C1083: Can…

【数据结构和算法】找到最高海拔

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 前缀和的解题模板 2.1.1 最长递增子序列长度 2.1.2 寻找数组中第 k 大的元素 2.1.3 最长公共子序列…

【WSL2】安装和配置ubuntu

文章目录 1. 安装WSL22. 安装ubuntu2.1. 通过Microsoft Store2.1. 通过命令行 3. ubuntu的使用3.1. 创建管理员root账户3.2. 换源3.3. 安装图形化界面GNOME 1. 安装WSL2 在控制面板 - 程序 - 程序与功能中点击启用或关闭Windows功能&#xff0c;选择 虚拟机平台适用于Linux的W…

阅读2023:让每一天都徜徉于书海之中

阅读&#xff0c;是中华民族的优良传统&#xff0c;也是创新发展的永续动力。2023年初&#xff0c;教育部、中央宣传部等八部门印发《全国青少年学生读书行动实施方案》&#xff0c;推动青少年学生阅读深入开展&#xff0c;促进全面提升育人水平。 阅读不仅是文化传承的重要手…

AI智能五子棋这个逆袭.高.智.商.人群的神器竟然是它果断入手

「当当狸智能五子棋」新品现已震撼上市发售啦&#xff0c;将迎来一个全新的对弈时代 市面上首款将智能语音交互&#xff0c;AI陪玩功能融合在棋盘里&#xff0c;且不用摆子收纳的新式棋盘五子棋。 一款打破传统&#xff0c;全面革新&#xff0c;融合AI智能陪玩模式的五子棋诞…

JavaScript基础知识点总结:从零开始学习JavaScript(二)

如果大家感感兴趣也可以去看&#xff1a; &#x1f389;博客主页&#xff1a;阿猫的故乡 &#x1f389;系列专栏&#xff1a;JavaScript专题栏 &#x1f389;ajax专栏&#xff1a;ajax知识点 &#x1f389;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 学习…

Vue使用Element table表格格式化GMT时间为Shanghai时间

Vue使用Element表格格式化GMT时间为Shanghai时间 说明 阿里巴巴java开发规范规定&#xff0c;数据库必备gmt_create、gmt_modified字段&#xff0c;使用的是GMT时间&#xff0c;在中国使用必然要转换我中国时间。 在阿里巴巴的Java开发规范中&#xff0c;要求每个表都必备三…

英特尔A770显卡介绍与解读

基础介绍 英特尔A770显卡。这是英特尔推出的一款高性能显卡&#xff0c;属于他们的Arc系列。这个系列的显卡主要面向游戏玩家和专业内容创作者&#xff0c;提供高性能图形处理能力。 A770显卡配备了先进的特性&#xff0c;例如支持硬件级光线追踪、AI加速技术&#xff0c;以及…

【小白专用】C# 压缩文件 ICSharpCode.SharpZipLib.dll效果:

插件描述&#xff1a; ICSharpCode.SharpZipLib.dll 是一个完全由c#编写的Zip, GZip、Tar 、 BZip2 类库,可以方便地支持这几种格式的压缩解压缩, SharpZipLib 的许可是经过修改的GPL&#xff0c;底线是允许用在不开源商业软件中&#xff0c;意思就是免费使用。具体可访问ICSha…

【数据结构】——期末复习题题库(2)

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

基于Java SSM框架实现宜百丰超市进销存购物商城系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现宜百丰超市进销存购物商城系统演示 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被…

【温故而知新】HTML回流和重绘

概念 HTML回流和重绘是浏览器渲染页面时的两个重要过程。 回流&#xff08;reflow&#xff09;指的是浏览器在渲染页面时&#xff0c;根据页面的结构和样式计算元素的布局和位置。当页面布局或元素位置发生变化时&#xff0c;浏览器需要重新计算元素的布局&#xff0c;这个过…

编写fastapi接口服务

FastAPI是一个基于 Python 的后端框架&#xff0c;该框架鼓励使用 Pydantic 和 OpenAPI (以前称为 Swagger) 进行文档编制&#xff0c;使用 Docker 进行快速开发和部署以及基于 Starlette 框架进行的简单测试。 step1&#xff1a;安装必要库 pip install fastapi uvicorn st…

解决Pycharm pip安装模块太慢问题,pycharm2022没有manage repositories配置镜像源

解决方案 方法清华阿里云中国科技大学华中理工大学 方法 URL写下面任意一个 清华 https://pypi.tuna.tsinghua.edu.cn/simple阿里云 http://mirrors.aliyun.com/pypi/simple/中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/华中理工大学 http://pypi.hustunique.c…

数字化时代的探索:学生为何对数据可视化趋之若鹜?

随着信息时代的迅猛发展&#xff0c;数据已经成为我们生活中不可或缺的一部分。而在这个数字化浪潮中&#xff0c;越来越多的学生开始关注数据可视化&#xff0c;这并非偶然。下面&#xff0c;我就从可视化从业者的角度出发&#xff0c;简单聊聊为什么越来越多的学生开始关注数…

边缘计算云边端全览—边缘计算系统设计与实践【文末送书-10】

文章目录 一.边缘计算1.1边缘计算的典型应用 二.边缘计算 VS 云计算三.边缘计算系统设计与实践【文末送书-10】3.1 粉丝福利&#xff1a;文末推荐与福利免费包邮送书&#xff01; 一.边缘计算 边缘计算是指在靠近物或数据源头的一侧&#xff0c;采用网络、计算、存储、应用核心…

探索 WebRTC:数字世界的实时通信魔法

前言 在当今日常生活中&#xff0c;我们期望能够随时随地与朋友、同事或家人进行实时沟通。WebRTC&#xff08;Web实时通信&#xff09;技术就像一种魔法&#xff0c;让这些交流变得无比便捷&#xff0c;而且完全在浏览器中实现&#xff0c;无需下载任何额外应用或插件。 Web…

基于时钟序列解决时钟回拨

一、背景 分布式 ID 生成算法用于在分布式系统中生成全局唯一的 ID 标识&#xff0c;而 twitter 提出的雪花算法便是其中一种知名的算法&#xff0c;其每次会生成一个 64 位的全局唯一整数&#xff0c;算法的基本思想非常巧妙&#xff1a; 二进制64位长整型数字&#xff1a;1…

PostgreSQL 可观测性最佳实践

简介 软件简述 PostgreSQL 是一种开源的关系型数据库管理系统 (RDBMS)&#xff0c;它提供了许多可观测性选项&#xff0c;以确保数据库的稳定性和可靠性。 可观测性 可观测性&#xff08;Observability&#xff09;是指对数据库状态和操作进行监控和记录&#xff0c;以便在…

哪些超声波清洗机的清洁力比较好?清洁力好的超声波清洗机推荐

超声波清洗机在我们日常生活中是越来越常见&#xff0c;它以强大的清洁力获得大众的青睐&#xff01;毕竟家里购入一款超声波清洗机还是一件非常方便的事情&#xff0c;免去了跑去眼镜店洗眼镜麻烦&#xff0c;免去了清洗一些耳钉、化妆刷这些小物件难清洁烦恼&#xff01;现在…