Unreal Engine中的Actor:理解、生成与消亡

这篇具有很好参考价值的文章主要介绍了Unreal Engine中的Actor:理解、生成与消亡。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

谈谈Actor

生成(实例化)Acotr

StaticClass/UClass:类模板/类的快照

Actor的生命周期

Actor的消亡

Destroy:标记删除

SetLifeSpan:设置存活时间

Destroyed:消亡Actor的通知

EndPlay:消亡时回调

删除(消亡)类型介绍


凡是能拖进场景编辑器中的,都是actor

谈谈Actor

Unreal Engine中的Actor:理解、生成与消亡

UE的场景可以理解为一个世界,而世界中物体的根源就是actor。

其中根源(actor)的根源则是UObject,这个后面会说。

actor是用来表示世界中任何物体的高级抽象类,由Actor进行构建,由Component进行行为组装,来完成整个游戏世界的元素展示。

能拖到世界场景的是且只能是actor。

可以比喻为:

世界场景就是话剧的舞台,actor则是上面的演员。演员起初是不具有任何动作、服装、以及表情甚至台词的,这些都需要我们为它进行详细的设计,而设计的过程就是为actor添加各种的component。

同时话剧也分幕前和幕后工作人员,也就是说即便舞台上没出现某些人,也不意味着整出戏没有某些人的参与。换到UE中就是,出现在世界场景视口中一定会存在于世界大纲中,但是世界大纲中存在的actor不一定要出现在视口中。

具体创建过程可看:UE4 C++:Actor与Component的创建、销毁_BBBourne的博客-CSDN博客_ue4销毁actor

生成(实例化)Acotr

有两种方法:

①从编辑器里拖到世界场景中(编辑器Editor运行,游戏就已经开始跑了,只不过没有Tick)

简单直观,无需编码,但可能影响游戏启动速度,增加场景负担。

②SpawnActor

复杂度高但可控性强,灵活。

而SpawnActor也有两种主要的方式:

  • 蓝图中可以通过SpawnActorOfClass来生成
  • 在C++中需要通过UWorld指针来创建,调用SpawnActor。

 Unreal Engine中的Actor:理解、生成与消亡Unreal Engine中的Actor:理解、生成与消亡

对于每一个在场景中存在的对象,本身都具有获取UWorld指针的能力。所以只需要调用GetWorld函数即可获得UWorld指针。

其实还有另一种途径生成actor:

③跟随着场景一起被创建

StaticClass/UClass:类模板/类的快照

生成Actor可用另外一种方式,当然方法还是SpawnActor,只不过传入这个工厂模板函数的参数有一些变化:

Unreal Engine中的Actor:理解、生成与消亡

这里的StaticClass()是一个静态函数。返回的是一个UClass*,其作用是一个“类的快照”,用于生成Actor。

在编辑器中直接的作用就是,C++创建的类,可以和蓝图一样被拖进场景中,并且一样可以被当做某些参数被设置。比如在一些下拉菜单中选择对象等。

之所以这么做的目的,是实现反射等机制,同时也为了与蓝图交互

Actor的生命周期

Actor的创建方式有三种,但差别不大。总体如下:

  1. 构造函数调用
  2. 初始化成员变量
  3. 如有蓝图,则初始化蓝图数据
  4. 构建组件
  5. BeginPlay(标志着Actor被创建到世界当中)
  6. Tick

Actor的消亡

Destroy:标记删除

可以自身调用Destroy()进行强制消亡操作。

默认是无参的。其实有两个参数:

  • bNetForce:是否强制网络同步删除
  • bShouldModifyLevel:主要用来控制先删除actor再修改关卡,还是先修改关卡再删除actor。默认为true,先修改关卡再删除actor

在Destroy()的源码中有一个IsPendingKill这一个东西,主要是用来标记这个actor是否等待被删除。

SetLifeSpan:设置存活时间

Unreal Engine中的Actor:理解、生成与消亡

Destroyed:消亡Actor的通知

当对象被删除,但并未从内存中删除,进行回调操作

Unreal Engine中的Actor:理解、生成与消亡

 

EndPlay:消亡时回调

当对象被删除,并从内存中删除,进行回调操作

删除(消亡)类型介绍

  • Destroyed:当actor或Component彻底被删除
  • LevelTransition:关卡切换是删除回调(非关卡流)
  • EndPlayInEditor:编辑器关闭时
  • RemovedFromWorld:关卡流切换被释放时
  • Quit:游戏退出

Unreal Engine中的Actor:理解、生成与消亡

 

题外话:

只有GameMode、PlayerController、Pawn、GameState可以加Exec指令文章来源地址https://www.toymoban.com/news/detail-445514.html

到了这里,关于Unreal Engine中的Actor:理解、生成与消亡的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unreal Engine游戏引擎的优势

    在现在这个繁荣的游戏开发行业中,选择合适的游戏引擎是非常重要的。其中,Unreal Engine作为一款功能强大的游戏引擎,在业界广受赞誉。那Unreal Engine游戏引擎究竟有哪些优势,带大家简单的了解一下。 图形渲染技术 Unreal Engine确实提供了先进的图形渲染技术,包括实时光

    2024年02月03日
    浏览(45)
  • Unreal Engine添加UGameInstanceSubsystem子类

    点击C++类文件夹,在右边的区域点击鼠标右键,在弹出的菜单中选择“新建C++类” 在弹出的菜单中选中“显示所有类”,选择GameInstanceSubsystem作为父类, 点击“下一步”按钮 输入子类名称“UVRVIUOnlineGameSubsystem”,选择插件作为新类的目标模块,点击“公共”选择器 打开C++工

    2024年04月26日
    浏览(44)
  • Unreal Engine 与 Blender - 比较指南

    虚幻引擎和 Blender 是游戏开发人员中最常用的两种软件,它们在游戏开发工作流程中都有自己的用途和地位。作为进入视频游戏行业的初学者,可能很难从数十种软件中筛选找到最适合您需求的一款。希望本指南能够缓解这一困难并帮助您决定选择哪个软件。 虚幻引擎是由

    2024年02月16日
    浏览(48)
  • Unreal Engine 4创建图片背景场景。

    传统的UI界面通常位于整个模型场景的最前面,这可能会导致很多的限制,例如创建纯图片的背景或者创建类似于游戏人物装备简介界面,这些场景图片都位于模型的后面,我们这个方法就是先解决这个问题。 创建 Actor蓝图类 2. 添加组件 :添加 “场景组件”,添加“摄像机

    2024年02月14日
    浏览(33)
  • Unreal Engine 游戏中枪的构建

      一、创建枪蓝图 1、创建一个actor蓝图: 在Blueprints文件夹中右键添加蓝图类actor并命名为Gun_BPGun_BP 2、添加骨骼网格体组件 双击打开蓝图类,在左上角组件中添加骨骼网格体组件 3、选择枪模型 选中骨骼网格体组件,将枪的网格体选中为这样 4、将骨骼网格体设置为蓝图的根

    2024年02月03日
    浏览(71)
  • Unreal Engine 虚幻引擎,性能分析,优化(二)

    目录 一、CPU 性能分析 二、GPU性能分析 三、Memory内存使用 一、CPU 性能分析 如渲染线程中出现 CPU 受限,原因可能是绘制调用过多。这是一个常见问题,美术师通常会将绘制调用进行组合,从而减少消耗(如:将多个墙壁组合为一个网格体)。实际消耗存在于多个区域中:

    2024年02月05日
    浏览(60)
  • Unreal Engine05:UE4基本概念

    主要是介绍一下UE4中的一些常用概念。 参考的博客如下: UE4常用逻辑关系和说明; UE4入门学习4:C++编程介绍; UE4中基础的类及其之间的关系; [官方] 虚幻引擎 4 术语; 《图解UE4渲染体系》Part 0 引擎基础 UE4世界的主要结构如下: World (当前游戏世界,可以包含多个Level)

    2024年02月06日
    浏览(65)
  • Unreal Engine 5.1 AI行为树基础入门

    ai行为树理解起来其实是npc根据自身一些情况进行一些逻辑执行,而这些逻辑是我们使用ai行为树去实现的。 ai行为树需要一个寻路网格体边界体积,在ue引擎中,体积Actor分为多种,寻路网格体边界体积只是其中的一种。 关于其它的体积,可以在官网网站查看 通过上面的介绍

    2024年02月11日
    浏览(37)
  • 记录自己Unreal Engine配置中出现过的问题

    此文会持续更新,记录遇到的奇怪事情:) 编UE的时候(dll经常会编译失败) UnrealEngineEngineBinariesWin64UE4Editor-MaterialEditor.dll没有被指定在Windows上运行,或者它包含错误。请尝试使用原始安装介质重新安装程序,或联系你的系统管理员或软件供应商以获取支持 直接把错误对

    2023年04月14日
    浏览(37)
  • Unreal Engine11:触发器和计时器的使用

    主要是介绍一下触发器和计时器的使用; 1. 新建一个C++类 创建的C++类也是放在Source文件夹中的Public和Private文件夹中; 选择Actor作为继承的父类; 头文件包括一个触发器和两个静态网格,它们共同组成一个Actor,定义如下: cpp 文件的构造函数实现如下: 一些注意的点如下:

    2024年02月03日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包