欢迎光临散文网 会员登陆 & 注册

UE5中使用c++为Actor运行时动态创建Component和ChildActor

2023-08-31 13:26 作者:飞呀飞呀文具盒  | 我要投稿

如何在运行时为Actor创建组件,网络中搜索有2种方式,一种是在构造函数中进行,本文主要讲述另外一种不在构造函数中使用CreateDefaultSubobject创建的方式


通过网络搜索,会得到如下的代码,可以在非构造函数中创建组件,比如通过按钮触发,或者在BeginPlay函数中创建


但是测试之后,发现组件并没有正确被创建出来,经过笔者的测试,使用如下的方式可以正确的在运行时动态的给Actor添加上Component,笔者测试的引擎版本是UE5.2.1


给Actor动态增加一个StaticMeshComponent


  • 首先我们先创建一个c++的类MyTest,创建完成后,2个文件如下所示,你们的代码文件会因为项目名称跟我不一样而有区别,主要就是TestProject_API会变成你的项目名字加_API

MyTest.h



MyTest.cpp



  • 首先给MyTest.cpp文件增加一个引用,因为会使用到构造Transform的方法


  • 给MyTest.h中增加一个属性,用于我们方便的指定一个静态网格体资源



  • 这次我们在BeginPlay()函数中增加组件


这样我们就完成了动态的增加组件,编译后在UE5中指定静态网格体资源之后就可以运行了,做法如下,在UE的C++ Classes路径下面,找到我们创建的C++类,右键选择创建蓝图



打开蓝图,选择静态网格体资源,将我们创建的蓝图拖拽到场景中,运行即可看到静态网格体组件被创建出来了



给Actor动态增加一个ChildActor

原理和增加组件是一样的,增加一个ChildActorComponent,再设置ChildActorClass,我们直接上代码


  • 给MyTest.h中增加一个属性,用于我们方便的指定子对象的蓝图资源



  • 在BeginPlay()函数中增加组件



最终的代码结果


MyTest.h



MyTest.cpp


UE5中使用c++为Actor运行时动态创建Component和ChildActor的评论 (共 条)

分享到微博请遵守国家法律