Unreal5研究笔记 Actor的生命周期函数

环境:Unreal5.6 语言:C++

面向:Unreal初学者

总起

Unity日渐式微,Unreal方兴未艾。趁此时重头开始研究Unreal,以作为工作上的参考,亦是为日后做准备。

此文章作为学习中记录,因为我对Unity比较熟悉,所以会优先以Unity的角度理解Unreal。

Unreal文档建设相当完善,不确定的内容可以直接跳转至官方内容查看,实在不行,Unreal也有全套源代码作为参考。

生命周期函数

首先是这张图片:

四种初始化流程:

  1. 从磁盘中加载
  2. 在编辑器中运行,Play in Editor
  3. 生成
  4. 延迟生成

Actor 的生命周期函数

  1. AActor::PreInitializeComponents
  2. UActorComponent::InitializeComponent,初始化组件,主要功能是标记组件已被创建
  3. AActor::PostInitializeComponents
  4. AActor::BeginPlay
  5. AActor::EndPlay

销毁会运行GC,Unreal中一般会群集处理(将紧密关联的UObject分组为一个"群集",在GC时作为一个整体单元进行扫描和回收,可关闭)

  1. UObject::BeginDestroy
  2. UObject::IsReadyForFinishDestroy,默认返回true,Actor中有个判断渲染完成才能销毁的逻辑
  3. UObject::FinishDestroy
  4. 使用命令Obj GC强制垃圾回收

Tick

  1. Tick组排序
    1. TG_PrePhysics,物理帧之前,Actor默认
    2. TG_DurationPhysics,和物理帧同时运行,适合那些无视物理数据或允许一帧偏差的逻辑,Component默认
    3. TG_PostPhysics,物理帧之后
    4. TG_PostUpdateWork,摄像机更新之后,需要知道摄像机准确位置的情况
  2. 以上步长都是跟渲染帧同步的,没有类似Unity FixedUpdate的概念
    1. 查到比较类似的是AActor.AsyncPhysicsTickActor
      1. 但主要是在物理线程中处理,需考虑线程安全
    2. 另一种方式是手动实现固定间隔的逻辑,或使用Timer
  3. Tick的最大时长
    1. 可以通过Config/DefaultEngine.ini中的/Script/Engine.Engine分段的MaxDeltaTime设置
    2. (类似Unity中的Project Settings的Maximum Allowed Timestep)
  4. 另:Tick会被蓝图覆盖掉,蓝图中的TickEvent没后接内容,C++中的Tick也不会运行

参考

  1. dev.epicgames.com/documentation/zh-cn/unreal-engine/unreal-engine-actor-lifecycle
相关推荐
山岚的运维笔记11 小时前
mysql 专业笔记 -- 第 36 章:MySQL 管理
运维·数据库·笔记·后端·mysql·oracle·dba
江湖人称菠萝包12 小时前
【Qt】《Qt 5.9 C++开发指南》笔记-Chapter10-Data Visualization
笔记·qt·qt5
老当益壮梁奶奶13 小时前
ARM汇编学习笔记(五):从按键轮询到 GIC 中断控制器(ARM Cortex-A7 )
arm开发·笔记·单片机·嵌入式硬件
既然如此,那就开摆13 小时前
2023_Kirillov_SAM_总结
笔记·学习·遥感
志尊宝14 小时前
Vue3 零基础每日笔记(048):嵌套路由与命名视图——后台管理系统布局雏形
前端·javascript·vue.js·笔记·html5
摇滚侠14 小时前
《Spring Boot 3:高级与架构设计》第 2 章 IOC容器的高级机制 BeanFactoryPostProcessor 个人理解 6
java·spring boot·笔记·后端
M78佐菲14 小时前
ARM学习笔记(五)
linux·arm开发·笔记·嵌入式硬件·学习
志尊宝15 小时前
Vue3 零基础每日笔记(052):路由常见坑一次排雷——404、刷新丢参数、部署白屏
前端·javascript·vue.js·笔记·html5
Ztt66666666616 小时前
一抹霞红停在圆肩壶上,留白让颜色更醒目
经验分享·笔记·其他·百度·微信公众平台
摇滚侠16 小时前
《Spring Boot 3:高级与架构设计》第 2 章 IOC容器的高级机制 Environment 个人理解 4
java·spring boot·笔记·后端