IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> UE引擎LGUI插件 —— LGUILifeCycleBehaviour & LGUILifeCycleUIBehaviour -> 正文阅读

[游戏开发]UE引擎LGUI插件 —— LGUILifeCycleBehaviour & LGUILifeCycleUIBehaviour

本篇使用UE4.26+LGUI 3.0

给大家介绍一下LGUILifeCycleBehaviour,顾名思义就是封装了一些LGUI生命周期的方法,用来配合LGUI的预制体工作流程会很方便(为什么这么说呢?后面会解释到)。

LGUI生命周期函数

1、在UE引擎里创建蓝图,父类选择LGUILifeCycleBehaviour:
在这里插入图片描述
2、创建完成之后打开这个蓝图,可以看到默认的BeginPlay和Tick被替换成了Awake、Start、Update,另外还可以在Functions/Override里面看到有OnEnable、OnDisable、OnDestroy:
在这里插入图片描述
3、这几个方法与Unity中的方法命名一样,实际的作用也一样。
Awake和Start用于替代UE的BeginPlay,Update用于替代Tick,OnDestroy用于替代EndPlay。

执行顺序:Awake -> OnEnable -> Start -> Update -> OnDisable -> OnDestroy

Awake : 对于非UI物体,LGUILifeCycleBehaviour在加载到场景中并且所在的Actor的RootComponent是可见的情况下执行一次;对于UI物体,LGUILifeCycleUIBehaviour在加载到场景中并且 UIItem 的 IsUIActive 是 true 的情况下执行一次。
OnEnable : LGUILifeCycleBehaviour的 GetIsActiveAndEnable 由 false 变为 true 的时候执行。如果一开始加载到场景里的时候 GetIsActiveAndEnable 就是 true 那么也会执行。
Start : 在第一个 Update 执行之前执行 Start。
Update : 当 GetIsActiveAndEnable 是 true 的时候每一帧执行一次;另外可以通过 SetCanExecuteUpdate 来开关 Update 的执行。
OnDisable : LGUILifeCycleBehaviour的 GetIsActiveAndEnable 由 true 变为 false 的时候执行,或在 OnDestroy 之前并且 OnEnable 执行过的情况下执行一次。
OnDestroy : LGUILifeCycleBehaviour被销毁(EndPlay)的时候并且 Awake 执行过的情况下执行一次。

方法说明
GetIsActiveAndEnable : 对于非UI物体,RootComponent 是可见并且 LGUILifeCycleBehaviour 的 enable 是 true 的情况下才返回 true;对于UI物体,UIItem 的 IsUIActive 是 true 并且 LGUILifeCycleUIBehaviour 的 enable 是 true 的情况下才返回 true。
SetCanExecuteUpdate : 调用之后并不会立即影响Update的执行,只有在Start/ OnEnable/ OnDisable之后才会影响。

Awake/ Start/ OnDestroy 在全生命周期中最多执行一次,OnEnable/ OnDisalbe/ Update 可能执行多次。

Awake和Start的关系
都可用于初始化,Awake是加载到场景后立即执行,Start是在Update之前执行,Awake和Start可能不是在同一帧执行,但是Start和Update肯定是在同一帧执行。当加载一个预制体的时候,其上所有LGUILifeCycleBehaviour都执行完毕之后才会执行所有的Start,所有Start执行完毕之后才会执行Update。

注意事项
同一个Actor上的多个LGUILifeCycleBehaviour的执行先后顺序是不一定的。
与 UE 生命周期函数的顺序关系:BeginPlay -> Awake … OnDestroy -> EndPlay , Tick 函数与 Update 函数无关。

4、之前说过 LGUILifeCycleBehaviour 跟LGUI的预制体一起用比较好,原因如下:
BeginPlay会在LGUI预制体的反序列化的过程中就执行,但是这时反序列化的工作还没有完成,很多属性都还没有完全还原,那么这个时候在BeginPlay里面执行的初始化工作获取到的数据是错误的;Awake就没有这个问题,Awake会等到当前的预制体的反序列化工作都完成之后再执行,保证所有获取到的属性都是正确的。

另外提一下,在LGUI2.x的版本里有LGUIBehaviour,现在LGUI3的版本里把这个类拆分成了LGUILifeCycleBehaviourLGUILifeCycleUIBehaviour:LGUILifeCycleBehaviour用于不是UI的物体上;LGUILifeCycleUIBehaviour继承自LGUILifeCycleBehaviour,用于UI物体上,并且包含了额外的UI的回调函数。

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-02-22 20:56:56  更:2022-02-22 20:59:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 16:31:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码