【UE4基础】对象创建与资源获取

UE4Genny:自动化与抽象化,降低虚幻引擎MOD制作门槛 游戏模组(MOD)是玩家对游戏进行个性化修改和内容创作的常见方式,其核心原理是通过修改游戏资源、数据或代码来实现新功能或内容。在技术实现上,MOD制作往往涉及资源解包、逻辑分析与代码注入等复杂流程,对制作者的技术栈要求较高。其技术价值在于能够极大地扩展游戏的生命力与可玩性,并催生活跃的玩家创作社区。常见的应用场景包括修改角色外观、调整武器属性、创建新任务以及实现全新的游戏机制。本文探讨的UE4Genny工具,正是针对虚幻引擎(UE4)游戏,通过自动化资源处理与抽象化逻辑编辑的思路,旨在简化上述流程。它尝试整 阅读详情

对象创建与资源获取

一、对象创建与销毁

1. 纯C++类的创建与销毁

创建: 对于纯C++类(这里指非继承自UObject的类,一般以F开头),可以通过new来创建对象,并使用TSharedPtr和TSharedRef来管理对象。

TSharedPtr<MyClass> MyClassPtr = MakeShareable(new MyClass());

销毁: 使用智能指针的计数器方法,自动销毁。

2. UObject及其子类创建与销毁

创建: 继承自UObject但不继承自Actor的类可以通过NewObject来创建对象,并由UE4引擎来管理对象。

UObjectClass* MyClass = NewObject<UObjectClass>();

销毁: 垃圾回收机制自动回收。

3. AActor及其子类的创建与销毁

创建: 继承自AActor的类,使用SpawnActor来创建对象,SpawnActor有七个重载函数。

AActorClass* MyClass = GetWorld()->SpawnActor<AActorClass>(NewLocation, NewRotation);

销毁: 使用Destroy函数请求销毁,回收时间由引擎决定。

4. UUserWidget及其子类的创建

创建: 创建Widget

TSubclassOf<UUserWidget> SubwidgetClass;
UUserWidget* MyWidget = CreateWidget<UUserWidget>(GetWorld(), SubwidgetClass);

//在UserWidget中我们可以使用WidgetTree创建子组件
UImage* DynImage = WidgetTree->ConstructWidget<UImage>(UImage::StaticClass());

移除:
可以使用MyWidget->RemoveFromXXX()函数,将其移除。

二、Component创建

1. 构造器中创建组件

当我们在构造器中初始化组件时,可以使用CreateDefaultSubobject函数来创建。并且此函数只能在构造器中使用而不能再BeginPlay等函数中使用!

UMySceneComponent* MySceneComponent = CreateDefaultSubobject<UMySceneComponent>(TEXT("MySceneComponent"));

2. 其它函数中创建组件

因为Component继承自UObject类,所以我们在其它函数中也可以像创建UObject子类一样,使用NewObject函数来创建组件。但是,创建组件后,我们需要使用RegisterComponent或RegisterAllComponents函数将其注册才能使其生效。

UStaticMeshComponent* MyMeshComp = NewObject<UStaticMeshComponent>(this, TEXT("MyMeshComp"));
MyMeshComp->SetupAttachment(RootComponent);
MyMeshComp->SetRelativeLocation(FVector(0.f, 0.f, 0.f));
UStaticMesh* StaticMesh = LoadObject<UstaticMesh>(NULL, TEXT("StaticMesh'/Game/StaticMesh.StaticMesh'"));
MyMeshComp->SetStaticMesh(StaticMesh);
MyMeshComp->RegisterComponent();
//RegisterAllComponents();

三、资源获取

资源分为美术资源和蓝图资源,我们分别使用不同函数获取到C++中使用。

1. 构造器中加载资源

蓝图资源加载
(1)如果要在构造器中将蓝图资源加载到C++中使用,可以使用FClassFinder来获取蓝图类

static ConstructorHelpers::FClassFinder<AActor> MyActorBP(TEXT("Blueprint'/Game/MyActorBP.MyActorBP_C'"));
TSubclassOf<AActor> MyActorClass = MyActorBP.Class;

(2)我们可以直接通过复制内容浏览器中的资源获取其地址,但如果直接通过其地址去加载资源,会发现找不到资源。我们可以通过两种方式来解决此问题。

  • 在BP路径后加_C:如上例地址:Blueprint’/Game/MyActorBP.MyActorBP_C’
  • 去掉路径前缀、单引号,后缀,只保留路径:如上例地址改为:/Game/MyActorBP.MyActorBP

(3)我们可以使用UClass*或TSubclassOf来获取其类指针

UClass* MyActorClass = MyActorBP.Class;
TSubclassOf<AActor> MyActorClass = MyActorBP.Class;

美术资源加载
(1)在构造器中如需要加载美术资源到C++中使用,可以使用FObjectFinder来获取资源。

static ConstructorHelpers::FObjectFinder<UStaticMesh> StaticMesh(TEXT("StaticMesh'/Game/StaticMesh.StaticMesh'"));
MeshComp->SetStaticMesh(StaticMesh.Object);

(2)美术(对象)资源可以直接输入其地址,而不需要对其路径进行修改。

2. 其它函数中加载资源

蓝图资源加载
使用LoadClass函数加载蓝图类

UClass* MyActorClass = LoadClass<AActor>(NULL, TEXT("Blueprint'/Game/MyActorBP.MyActorBP_C'"));

对路径的要求与FClassFinder一样,需要在最后加_C
美术资源加载
使用LoadObject函数加载美术资源

UStaticMesh* StaticMesh = LoadObject<UstaticMesh>(NULL, TEXT("StaticMesh'/Game/StaticMesh.StaticMesh'"));

LoadObject()可以加载的文件类型包括: Texture, Material, SoundCue, SoundWave, ParticlesSystem, AnimMontage, BlendSpace(1D, 2D, 3D), AnimSequence, AnimBlueprint, SkeletalMesh等。
备注
FObjectFinder、FClassFinder和LoadClass都是对LoadObject的封装。

UE5学习笔记1-UsrWidget 在开始时添加一个界面 阅读详情

相关推荐

[UE4][C++]基于UUserWidget的一种序列图播放方法

最近在做一个大项目,鸽了几个月了.......

PangCoder的博客 1670

【虚幻引擎UE】基于UUserWidget类创建C++类UMyClass后再基于UMyClass创建蓝图会导致Designer控件设计面板消失

第三步:在蓝图的Class Settings中ClassOptions-ParentClass中更改父类为自己创建的UMyClass类。第一步:创建基于UUserWidget类的c++类UMyClass,类中无需任何改动。第二步:基于UUserWidget类创建蓝图,此时蓝图有Designer面板。

Mousse_yu的博客 518

UE4离线手册:CHM格式文档的价值、局限与现代工作流替代方案

在游戏开发与计算机图形学领域,API参考文档是开发者理解引擎底层机制、掌握类与函数用法的核心资源。其原理在于通过结构化组织技术接口的说明、参数与示例,为编程提供权威指引。对于虚幻引擎(Unreal Engine)这类复杂框架,文档的技术价值尤为突出,它不仅是开发调试的必备工具,更是学习引擎架构与设计思想的重要途径。在实际应用场景中,开发者常面临网络环境不稳定或需要快速检索的痛点,因此离线化、可本地搜索的文档格式(如CHM)成为特定时期的解决方案。本文聚焦于一份基于UE4.15版本的社区汉化CHM手册,解析其

weixin_30628077的博客 521

UE5 c++将自定义UserWdiget添加到对应菜单栏

为了实现与UserWidget一致的右键添加,便有了此章注:这里使用的是UE5.3。

c++、UE 2104

UE4 UI简单例子 C++

一个简单实现点击按钮更换图片的UE4C++代码例子,例子很简洁,使用到了简单的UI创建、类型转换等等相关常用的UE4中需要的方法

【教程】BM1684X-32边缘计算盒子 网络配置教程

BM1684X边缘计算盒子网络配置教程

ShiMetaPi的博客 714

c++中获取蓝图组件_【UE4基础】对象创建与资源获取

对象创建与资源获取一、对象与销毁1. 纯C++类的创建与销毁创建: 对于纯C++类(这里指非继承自UObject的类,一般以F开头),可以通过new来创建对象,并使用TSharedPtr和TSharedRef来管理对象。TSharedPtr<MyClass> MyClassPtr = MakeShareable(new MyClass());销毁: 使用智能指针的计数器方法,自动销毁2...

weixin_39761491的博客 2884

Qt自带绘图与GDI+绘图方式比较_gdi+实时绘制qt(2)

2、GDI+是Windows操作系统中的图形设备接口,它提供了一套用于绘制图形的API,包括了图形渲染、图形变换、图形剪切、图形填充等功能,使开发者可以快速地开发出各种类型的图形应用程序。1、Qt是一个跨平台的C++应用程序框架,它提供了一套用于GUI编程的类库,包括了绘图、网络、XML、数据库、多线程等模块,使开发者可以快速地开发出高质量的跨平台应用程序。Qt提供了一套用于绘图的类库,包括了QPainter、QPen、QBrush等类,使开发者可以快速地进行图形绘制。

qq_17136213的博客 915

UE4SS游戏Mod工具完整使用手册:从入门到精通

UE4SS是一款专为虚幻引擎游戏设计的强大Mod工具,它能够为玩家带来前所未有的游戏定制体验。无论你是想要添加新功能、修改游戏机制,还是简单地进行调试分析,UE4SS都能满足你的需求。 ## 准备工作与环境要求 在开始安装UE4SS之前,请确保你的系统环境符合以下要求: **系统要求** - Windows 10/11 64位操作系统 - 支持的游戏版本:UE4/UE5 - 足够的磁盘空间用

gitblog_01161的博客 1025

江科大51单片机笔记【1】单片机及开发板介绍

单片机,Micro Controller Unit,简称MCU,内部集成了CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功能单片机的任务是信息采集(传感器)、处理(CPU)和硬件设备(电机、LED)的控制单片机算是一个袖珍版计算机,是一个完整的计算机系统,成本低体积小结构简单单片机的使用领域:智能仪表、实时工控、通讯设备、导航系统、家用电器等。

2301_80195807的博客 831

R爬虫RSelenium环境搭建及简单应用

这是鄙人自己实践的一种可行的环境搭建,我会尽量详细的写下大家步骤。

weixin_44349986的博客 2013

虚幻引擎C++进阶:从基础语法到性能优化的核心路径

C++作为高性能游戏开发的核心语言,其底层内存管理、指针操作和面向对象特性是理解现代游戏引擎架构的基础。掌握C++不仅能够实现对硬件资源的精细控制,更能为性能优化提供根本性手段。在虚幻引擎开发中,从蓝图可视化脚本转向C++是项目复杂化和性能要求提升后的必然选择。通过理解类与对象、指针引用、内存管理及UE特有的反射宏系统,开发者能够构建更高效、更可控的游戏逻辑。本文将C++知识体系与虚幻引擎开发实践相结合,重点探讨如何将基础语法转化为CPU优化、内存管理及渲染性能提升的具体工具,为从蓝图使用者向引擎深度开发者

weixin_33895657的博客 415

一篇讲透:豆包、元宝、DeepSeek、Kimi、WorkBuddy,职场里到底怎么分工

这篇文章深入分析了当前主流AI工具(WorkBuddy、豆包、腾讯元宝、DeepSeek、Kimi)的特点和使用场景,帮助读者根据不同工作需求选择合适的AI助手。核心观点包括: AI工具各有所长:豆包适合快速创作初稿,元宝擅长信息检索整理,DeepSeek强于逻辑分析,Kimi专精文本处理,WorkBuddy则更适合任务推进和成果交付。 使用前需明确需求:是要创意发散、信息整理,还是任务执行?不同阶段应选用不同工具组合。 提供了6个具体职场场景的解决方案,包括文章创作、课程设计、会议纪要等,并给出详细的操作

weixin_39284145的博客 1万+

UE4SS终极指南:5分钟掌握虚幻引擎游戏修改与脚本开发

你是否曾经想过深入修改自己喜欢的虚幻引擎游戏,但被复杂的技术门槛吓退?UE4SS(Unreal Engine Scripting System)正是为你量身打造的游戏修改神器!这个开源项目提供了完整的Lua脚本系统、C++模组API、SDK生成器和实时属性编辑器,让你能够轻松掌控UE4/UE5游戏的每一个细节。 ## 🎯 为什么你需要UE4SS?三大核心价值 ### 1. **零基础也能上手

gitblog_00363的博客 209

Java中使用工厂模式和策略模式优雅消除if-else语句(UML类图+案例分析)

在最近的后端开发中,多多少少会发现有很多if-else语句,如果条件过多则会造成整体代码看起来非常臃肿。本篇博客汇总了我对工厂模式和策略模式的理解,以及我是如何把它们巧妙运用在实际项目当中的一些技巧进行了分享,如有问题,欢迎评论区讨论!

黄团团的个人博客 2612

C#WPF常用的9种布局方式详解

本文介绍WPF中常用的九种布局,Grid、StackPanel、WrapPanel、DockPanel、UniformGrid、Canvas、ScrollViewer、ViewBox、Border。

qq_30725967的博客 1万+

UE4SS终极指南:5分钟掌握虚幻引擎游戏修改与Lua脚本开发

UE4SS是一款强大的虚幻引擎游戏修改工具,专为UE4/UE5游戏设计,提供Lua脚本系统、SDK生成器、实时属性编辑器和多种转储工具。无论你是游戏玩家还是开发者,都能通过UE4SS轻松实现游戏修改、模组制作和脚本开发。 ## 🚀 快速启动流程图:一键安装UE4SS ```mermaid flowchart TD A[开始安装UE4SS] --> B{选择版本类型} B --

gitblog_00188的博客 229

从数据库到数据仓库:数据仓库导论

本文为数据仓库导论,旨在介绍数据仓库的基本理念和应用场景,帮助读者理解数据仓库的重要性及其在企业中的实际应用。

探索大数据世界 - 深入解析数据存储、分布式计算与人工智能 2784

虚幻引擎串口通信技术:连接虚拟世界与物理硬件的架构级解决方案

在数字孪生、交互式媒体和工业仿真领域,虚幻引擎作为实时渲染的领导者,面临着虚拟环境与物理设备深度集成的技术挑战。传统硬件通信方案依赖复杂的C++编程和系统调用,导致开发门槛高、迭代周期长、维护成本大。SerialCOM插件通过架构级创新,将串口通信抽象为可视化蓝图节点,为虚幻引擎开发者提供了连接虚拟世界与物理硬件的标准化接口,实现了从底层驱动到高层应用的完整技术栈覆盖。 ## 技术演进脉络:从U

gitblog_00485的博客 668

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

UE4SS终极指南:如何用开源工具解锁虚幻引擎游戏的全部潜力

你是否曾经想过像游戏开发者一样深入探索虚幻引擎游戏的内核?是否渴望修改游戏逻辑、创建自定义模组,或是实时查看游戏对象的内部状态?UE4SS(Unreal Engine 4/5 Scripting System)正是为这样的梦想而生的开源工具集。这个强大的脚本系统为虚幻引擎4和5游戏提供了完整的Lua脚本支持、SDK生成器、实时属性编辑器等一系列革命性功能,让普通玩家也能拥有开发者的力量。 ##

gitblog_00417的博客 359

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

UE4SS终极指南:5分钟学会虚幻引擎游戏修改与脚本开发

你是否曾经想过修改自己喜欢的虚幻引擎游戏,却苦于没有合适的工具?UE4SS正是你需要的解决方案!这个强大的可注入式LUA脚本系统专门为UE4/UE5游戏设计,让你能够轻松修改游戏逻辑、添加新功能,甚至创建自己的模组。无论你是普通玩家还是开发者,UE4SS都能为你打开游戏修改的大门。 ## 🚀 为什么选择UE4SS?三大核心优势 ### 1. **零编程门槛的Lua脚本系统** UE4SS内置

gitblog_00398的博客 258

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

UnrealSharp实战指南:C#开发虚幻引擎的15个核心要点

游戏引擎开发中,跨语言交互是连接不同技术栈、提升开发效率的关键技术。其核心原理是通过绑定层(Binding Layer)实现运行时类型映射与函数调用转换,在保持原生性能的同时,扩展开发语言的选择范围。这项技术的核心价值在于允许开发者使用更熟悉的编程语言和生态资源,降低学习成本,加速原型迭代与逻辑开发。在虚幻引擎(Unreal Engine)生态中,UnrealSharp正是实现C#与引擎C++核心交互的桥梁方案,它通过自动生成绑定代码,让开发者能够利用C#的现代语法和.NET丰富类库,高效开发游戏逻辑、工具

weixin_34175509的博客 363
上一篇: 【C++基础总结】异常处理try-catch
下一篇: 【C++基础总结】函数
Im 胡嘿嘿
博客等级 码龄10年 148粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值