UE Actor生命周期

简介: UE Actor生命周期

生命周期流程图

Actor生命周期如上图所示,主要包括以下:

在关卡中实例化或生成Actor,包括如何初始化Actor。

将Actor标识为PendingKill,然后通过垃圾回收移除或销毁。

其实,从上图可以看出不管Actor是如何创建的,最终销毁路径都相同。

Actor生成方式

关于Actor的生成方式,有三种:

1.从磁盘加载

2.在编辑器中运行

3.生成/延迟生成

Actor生命周期终点

这个有多种方式销毁Actor,但是从世界中删除它们的方式是一样的。事实上,大部分Actor在运行中不会实际销毁,可以看垃圾回收。

需要删除某个Actor时,手动调用AActor::Destroy,这时候GamePlay仍在继续。Actor被标记为等待销毁并从关卡的Actor数组中移除。

垃圾回收

一个对象被标记待销毁的一段时间后,垃圾回收会将其从内存中移除,释放其使用的资源。

在销毁过程中,调用以下函数:

  1. UObject::BeginDestroy
  2. UObject::IsReadyForFinishDestroy
  3. UObject::FinishDestroy

高级垃圾回收

创建子对象。将对象与其子对象组合到垃圾回收器的单个群集后,引擎可延迟释放群集使用的资源,直到整个对象可被释放时一次性释放全部资源。

多数项目中无需对垃圾回收进行配置或修改,但存在一些特定情况 - 可以如下方式对垃圾回收器的"集群"行为进行调整,以提高效率:

群集处理(Clustering) - 关闭集群。在 项目设置(Project Settings) 中的 垃圾回收(Garbage Collection) 部分下,可将 创建垃圾回收器UObject群集(Create Garbage Collector UObject Clusters) 选项设为 false。对多数项目而言,此操作将导致垃圾回收效率降低,因此只建议在性能测试证明其绝对有益的情况下使用。

小结

其实,生命周期主要包括了生成(SpawnActor),初始化数据,生命周期结束(Destroy),垃圾回收/高级垃圾回收。从这几个过程可以总结出来大部分的物体的生命周期也都是这个过程。学习到了Actor的,其他地方遇到这种类型的方式,直接套用就好了。就像android的生命周期,或者unity的生命周期,也可以用这种方式来表示下。大概逻辑是一样的,细节有些不同。

相关文章
|
供应链 API
案例分享:API如何助力小型电商实现月销售额翻倍
"悦居生活"通过接入支付、库存、营销及物流API,优化运营流程,解决库存滞后、营销低效、物流体验差等问题,实现库存周转率提升152%、会员复购率增长128%、月销售额突破32万元。
|
9月前
|
SQL 数据库连接 数据库
Activity代码实现
本教程演示如何使用Activiti创建、部署并操作简单工作流。包括流程定义、启动实例、任务查询与完成,结合代码与数据库验证,实现审批流程自动化管理。
Activity代码实现
WK
|
机器学习/深度学习
实际应用场景下Tanh和Sigmoid哪个更常用
在实际应用中,Tanh和Sigmoid函数的选择受多种因素影响。Sigmoid函数常用于二分类问题的输出层,因其输出范围在(0, 1)内,适合表示概率;但在隐藏层中较少使用,因为它会导致梯度消失和非零中心化问题。Tanh函数输出范围在(-1, 1),以0为中心,适用于隐藏层,有助于加快收敛速度,但也存在梯度消失问题。随着深度学习技术的发展,ReLU及其变体因计算效率高和梯度消失问题较轻而逐渐成为主流选择。因此,选择激活函数需综合考虑任务需求和网络结构特点。
WK
850 3
|
人工智能 关系型数据库 Serverless
1024,致开发者们——希望和你一起用技术人独有的方式,庆祝你的主场
阿里云开发者社区推出“1024·云上见”程序员节专题活动,包括云上实操、开发者测评和征文三个分会场,提供14个实操活动、3个解决方案、3 个产品方案的测评及征文比赛,旨在帮助开发者提升技能、分享经验,共筑技术梦想。
2305 159
|
存储 弹性计算 运维
OS copilot测评
**OS Copilot测评摘要** - 开发者测评OS Copilot,期望提升开发效率和学习辅助。 - 环境配置顺利,能运行示例脚本。 - 在代码编写和注释方面表现出色,能生成Python脚本统计.js和.ts文件行数。 - 对话问答功能需改进,对代码分析的响应不够准确。 - 在辅助编程学习中,提供统计代码行数的脚本,实际运行有效。 - 产品体验得分6/10,建议增强答案准确性,提供错误处理和安装指引。 - 希望增加功能,如反馈建议、错误排查和与OSS、语音输入等其他产品联动。
OS copilot测评
|
Linux C++
Linux c/c++之进程的创建
这篇文章介绍了在Linux环境下使用C/C++创建进程的三种方式:system函数、fork函数以及exec族函数,并展示了它们的代码示例和运行结果。
668 0
Linux c/c++之进程的创建
|
机器人 人机交互 vr&ar
实战 | 实时手部关键点检测跟踪(附完整源码+代码详解)
实战 | 实时手部关键点检测跟踪(附完整源码+代码详解)
|
图形学
【unity小技巧】unity3d创建和实现破碎打破物品,万物可破碎
【unity小技巧】unity3d创建和实现破碎打破物品,万物可破碎
1476 0
【unity小技巧】unity3d创建和实现破碎打破物品,万物可破碎
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
存储 安全 NoSQL
【C++ 异常 】深入了解C++ 异常机制中的 terminate()处理 避免不必要的错误(二)
【C++ 异常 】深入了解C++ 异常机制中的 terminate()处理 避免不必要的错误
1324 1

热门文章

最新文章