简介

在UE4游戏场景中看到的所有对象皆是Actor,而Actor复杂的功能是由许多不同的Component共同实现的。Actor是Object的基类,它是一个可以放置或生成在世界中的对象。

当我们想要在场景中创建一个物体时,先要创建一个继承于Actor的C++类,再基于该C++类创建蓝图类,然后只要把这个蓝图拖进场景中就可以了。那我们如果想要使用代码在场景中批量生成已经创建好的蓝图,也就是动态创建该怎么办呢?


代码实现

首先在头文件中声明要创建的蓝图类的对象,使用 TSubclassOf 限定变量的类型只能是要创建的蓝图类或者该蓝图类的子类:

TSubclassOf<YourClass> BlueprintVar;        // YourClass是蓝图使用的基类

然后需要在构造函数中给变量赋值,使用 FClassFinder 找到该蓝图类,要使用 FClassFinder 函数需要包含头文件 "UObject/ConstructorHelpers.h":

// TEXT里面是要创建的蓝图的路径
static ConstructorHelpers::FClassFinder<YourClass> UBlueprint(TEXT("/Game/Blueprints/BlueprintName"));
BlueprintVar = UBlueprint.Class;

最后使用 SpawnActor() 在场景中生成蓝图的对象,这段代码不可以放在构造函数中,可以把它放在 BeginPlay() 中,或者写在另外的函数中,在想要生成该蓝图对象的时候调用:

FActorSpawnParameters Params;
Params.Owner = this;
GetWorld()->SpawnActor<YourClass>(BlueprintVar, GetActorLocation(), FRotator::ZeroRotator, Params);

这里说一下 SpawnActor 的每个参数的意思,第一个参数是前面我们声明并赋值的蓝图类的对象,第二个参数是生成的蓝图的位置坐标,这里的 GetActorLocation() 是获取当前类的当前位置,第三个参数是生成的蓝图的旋转角度,这里的 FRotator::ZeroRotator 是不旋转,第四个参数是生成的蓝图对象的拥有者是谁,它是一个默认参数,不填的时候默认没有拥有者。这个参数的类型是 FActorSpawnParameters 的结构体类型,这里是指定当前类为生成的蓝图对象的拥有者。

UE 在C++中生成一个基于蓝图的Actor相关推荐

  1. Python中生成一个指定长度的随机字符串实现示例

    方法一: 定义一个函数,参数为所要生成随机字符串的长度.通过random.randint(a, b)方法得到随机数字,具体函数如下: 1 2 3 4 5 6 7 8 9 10 def generate ...

  2. python生成序列_python中生成一个指定长度的列表,按1,2,3的序列生成

    加入我们希望写个生成1-10的正数,或者1-100的整数序列列表,我们不可能打100个数字吧,Python里要实现这个功能是非常的简单的 首先,Python3中有一个range函数 比如我们需要生成1 ...

  3. python下载bt文件_给定一个.torrent文件,如何在python中生成一个磁力链接?

    小编典典 您可以使用从BitTorrent中提取的bencode模块来执行此操作. 为了展示一个例子,我从这里下载了Ubuntu的torrent ISO: http://releases.ubuntu ...

  4. lin通信ldf文件解析_详细步骤讲解如何在CANoe中创建一个LIN通讯工程(多图+详解)...

    本文首发自微信公众号"汽车技术馆"! CANoe可以实现基于CAN通讯的通讯测试和仿真,同时也可以支持基于LIN通讯的通讯测试和仿真,如何在CANoe中建立一个基于LIN通讯的工程 ...

  5. lin通信ldf文件解析_手把手教你在CANoe中创建一个LIN通讯工程

    CANoe可以实现基于CAN通讯的通讯测试和仿真,同时也可以支持基于LIN通讯的通讯测试和仿真,如何在CANoe中建立一个基于LIN通讯的工程呢? 第一步:打开软件之后,主菜单选择file->n ...

  6. 搭建一个基于http的yum服务器

    基于http的yum服务器 在集群中搭建一个基于HTTP的yum服务器,不仅安装速度变快了许多,还能扩展自己定制的rpm包放入yum服务器中,其他服务器只需要正常使用yum install即可批量安装 ...

  7. ROS(Robot Operating System)笔记 : 1.使用launch file在gazebo中生成urdf机器人

    ROS(Robot Operating System) 1.使用launch file在gazebo中生成urdf机器人 最近接触了ROS(Robot Operating System),发现单单学习 ...

  8. java生成pdf表格_java在pdf中生成表格的方法

    1.目标 在pdf中生成一个可变表头的表格,并向其中填充数据.通过泛型动态的生成表头,通过反射动态获取实体类(我这里是User)的get方法动态获得数据,从而达到动态生成表格. 每天生成一个文件夹存储 ...

  9. 中查询一个文件夹下文件数量_如何在 Bash 中使用循环 | Linux 中国

    使用循环和查找命令批量自动对多个文件进行一系列的操作.-- Seth Kenlon(作者) 人们希望学习批处理命令的一个普遍原因是要得到批处理强大的功能.如果你希望批量的对文件执行一些指令,构造一个可 ...

最新文章

  1. 世界上第一台电子计算机到底是谁发明的?
  2. python 网关控制家居_在树莓派上搭建智能家居网关
  3. autosys start_mins
  4. 大牛书单 | 读懂5G,改变社会
  5. WordPress分类列表函数:wp_list_categories用法及参数详解举例
  6. 云服务器下行_腾讯云轻量应用服务器简单测评
  7. hive mysql windows_Java-从MySQL到Hive导入,其中MySQL在Windows上运行,而Hive在Cent OS上运行(Horton Sandbox)...
  8. 卷积神经网络爬虫实现新闻在线分类系统
  9. fastreport 横向分栏_FastReport开发指南
  10. mysql删除表单挑数据_MySQL 删除数据表
  11. win7一直显示正在关机_windows8.1和windows7哪个好_win8.1好还是win7好用
  12. 普林斯顿微积分读本篇十五:积分方法
  13. 购物网站 前台后台 思维导图_「培哥学堂」60套思维导图PPT送给你,让你的工作事半功倍!(建议收藏)...
  14. idea 运行vue项目
  15. 【信息系统项目管理师】信息系统项目管理师计算题汇总
  16. 针孔相机模型,鱼眼相机模型,单目标定
  17. ES生命周期管理 配置ilm策略
  18. NAV导航网格寻路(4) -- 生成nav网格
  19. Openwrt/lede软路由设置为ap模式
  20. VUE 自定义日历+切换上下月+点击事件

热门文章

  1. 爬虫入门,带你用30行代码爬取高清美女写真,附安装包+源码
  2. Spring Security 5.0的DelegatingPasswordEncoder详解
  3. 华为设备配置PIM-SM命令
  4. python3.7和3.6区别_选择 Python3.6 还是 Python 3.7
  5. @Transactional(readOnly = true)
  6. C# 上传WPS Excel 后台转换成txt,再压缩为ZIP
  7. 华为无线设备配置动态负载均衡
  8. 简历被肆意贩卖,个人信息安全何在?
  9. [转载-FLUENT学习]流动仿真计算时湍流模型的选择
  10. Google Earth Engine(GEE)——全球影像数据正确下载方式和注意事项