当前位置: 首页 > article >正文

虚幻引擎Actor类生命周期

AActor构造函数

  • AActor类的构造函数中,虚幻引擎会初始化与该Actor相关的一些关键属性,比如:
    • 默认的组件(如RootComponent、MeshComponent等)
    • 默认的属性设置,例如位置、旋转、缩放等。
    • 还会调用BeginPlay等生命周期函数,但在构造函数中,这些函数不会执行。
    • 当你在场景中创建一个Actor对象时,虚幻引擎会首先调用该Actor类的构造函数。这个时机通常是在蓝图实例化、关卡加载或者你通过代码手动调用SpawnActor时。

  • BeginPlay() 这是Actor生命周期中的一个重要函数,它会在Actor被创建并初始化后被调用。与构造函数不同的是,BeginPlay会在游戏开始时调用(或者Actor被激活时),且通常用于初始化更复杂的逻辑。

    • BeginPlay会在Actor所有组件的构造函数调用之后执行。
    • 这个时机可以用来执行一些更复杂的操作,比如与其他Actor交互、设置定时器、监听事件等。
  • Tick() 这个函数会在每一帧执行,它会在BeginPlay之后被调用,用于处理每帧需要更新的逻辑(例如位置更新、动画播放等)。

SpawnActor和Actor创建

  • 通过代码动态生成Actor时:
    • 当你使用UWorld::SpawnActor函数或SpawnActorDeferred等方法动态生成Actor时,构造函数会在SpawnActor的调用过程中被执行。
    • 在这种情况下,构造函数的调用顺序是:
      1. Actor的构造函数。
      2. 设置Actor的默认属性。
      3. 调用BeginPlay(如果Actor是激活的)。
  • 通过蓝图创建时:
    • 蓝图中的Actor也会调用构造函数,但与通过代码直接创建不同,蓝图中的Actor在编辑器中实例化时可能涉及到更多的设置(例如在编辑器中修改属性)。

5. 构造函数 vs. BeginPlay

  • 构造函数:

    • 用于初始化Actor的属性和组件(例如RootComponent)。
    • 构造函数中的逻辑应该尽量简单,避免涉及到游戏逻辑,特别是与其他Actor的交互。
    • BeginPlay之前,Actor的其他组件还未完全初始化,因此在构造函数中不能依赖于其他Actor或游戏逻辑的状态。
  • BeginPlay()

    • BeginPlay被调用时,Actor已经完全初始化,所有的组件和属性已经设置好,可以安全地与游戏中的其他对象交互。
    • 一般来说,BeginPlay用于进行任何需要在游戏开始后执行的初始化操作。

总结:

  • 构造函数:在Actor实例化时调用(例如通过代码或蓝图生成)。
  • BeginPlay:在游戏开始后,Actor完全初始化后调用,适用于涉及更复杂的游戏逻辑初始化。

http://www.kler.cn/a/430687.html

相关文章:

  • LeetCode:257. 二叉树的所有路径
  • ubuntu安装sublime安装与免费使用
  • Linux使用教程及常用命令大全
  • GPT人工智能在医疗文档中的应用
  • 运动控制卡网络通讯的心跳检测之C#上位机编程
  • xdoj 数字个数统计
  • Rust快速入门(五)
  • uni-app H5端使用注意事项 【跨端开发系列】
  • 面试题(仅供参考)
  • 深入理解代理模式(Proxy):静态代理、动态代理与AOP
  • 基于SpringBoot的养老院管理系统的设计与实现
  • PS学习第一天
  • 记录 idea 启动 tomcat 控制台输出乱码问题解决
  • maven报错“找不到符号“
  • 将路径转换为短路径形式(8.3格式)解决 `CFile::Open` 无法打开长路径问题
  • 从零搭建网站(第三天)
  • 连续大涨,汉王科技跑步进入AI应用舒适区
  • Vue.js的生命周期
  • go使用闭包处理数据
  • List与Set、数组与ArrayList、ArrayList与LinkedList的区别
  • 【kafka】常用基础命令使用案例
  • ViT学习笔记(三) RepViT和TransNext简介
  • 【定时任务】定时任务技术实现原理和选型分析
  • 分析比对vuex和store模式
  • vue-生命周期
  • 力扣 螺旋矩阵-54