LGUI毕竟参考自unity的NGUI/UGUI,自然也会实现一些类似的生命周期函数
LGUI Life Cycle Behaviour
由于 LGUI 使用像 Unity 一样的工作流程,因此建议在大多数情况下使用 LGUILifeCycleBehaviour 作为基本 ActorComponent 类,尤其是在 LGUIPrefab 中。
创建蓝图时,输入“LGUILifeCycle”,然后显示两个类,一个是 LGUILifeCycleBehaviour,另一个是 LGUILifeCycleUIBehaviour:

通常只使用LGUILifeCycleBehaviour 类,它可以适应大多数用例。LGUILifeCycleUIBehaviour 包含一些仅用于 UI 元素的函数/事件。
生命周期行为
LGUILifeCycleBehaviour 的生命周期函数由 LGUIManagerActor 统一管理,执行顺序如下:
Awake -> OnEnable -> Start -> Update -> OnDisable -> OnDestroy
Awake:LGUILifeCycleBehaviour 在加载到场景中时执行一次,并且 UIItem 的 IsUIActive 为 true。如果 LGUILifeCycleBehaviour 是从预制件创建的,则需要将初始化工作放在 Awake(而不是 BeginPlay)中 ,因为 Awake 将在所有预制件反序列化工作完成后执行。
OnEnable:当 LGUILifeCycleBehaviour 的 GetIsActiveAndEnable 从 false 更改为 true 时执行。
Start:在执行第一个 Update 之前执行 Start。
Update:当 GetIsActiveAndEnable 为 true 时,每帧将执行一次。
OnDisable:当 LGUILifeCycleBehaviour 的 GetIsActiveAndEnable 从 true 变为 false 时执行
OnDestroy:当 LGUILifeCycleBehaviour 被销毁 (EndPlay) 并且 Awake 被执行时执行一次。
Awake/Start/OnDestroy 在整个生命周期中只能执行一次,OnEnable/OnDisalbe/Update 可以执行多次。
GetIsActiveAndEnable:当RootComponent可见且该组件已启用时返回true,请注意! !如果RootComponent是UIItem:当UIItem是“activehierarchy”并且这个组件是启用的时候返回true。
使用虚幻引擎的内置生命周期函数执行顺序:BeginPlay -> Awake ...OnDestroy -> EndPlay,则 Tick 函数与 Update 函数无关。
预制件中的唤醒执行顺序:层级较高的脚本将更早执行,因此根 Actor 上的脚本将执行第一个,最低 Actor 上的脚本将执行最后一个。
GetRootSceneComponent() 获取的是组件所属 Actor 的 RootComponent;是一个GetOwner->GetRootComponent 快捷方法
LGUI LifeCycle UI Behaviour
基本的和LGUI Life Cycle Behaviour一样,ULGUILifeCycleUIBehaviour 是专门为 UI 设计的生命周期行为组件,必须附加到 RootComponent 为 UUIItem 的 Actor 上。它在继承基类功能的基础上,额外提供了 UI 特定的回调函数。
OnUIActiveInHierarchy:当 RootUIComp IsActiveInHierarchy 状态更改时调用。
OnUIDimensionsChanged:更改 RootUIComp->AnchorData 时调用( UI 尺寸改变时调用)。
OnUIChildDimensionsChanged:当 RootUIComp 的 attachchildren->AnchorData 发生更改时调用(子 UI 尺寸改变时调用)。
OnUIChildAcitveInHierarchy:当 RootUIComp 的附加子 IsActiveInHierarchy 状态发生更改时调用(子 UI 激活状态改变时调用)。
OnUIAttachmentChanged:当 RootUIComp 附加到新的父级时调用( UI 附加关系改变时调用)。
OnUIChildAttachmentChanged:当 RootUIComp 的附加子项附加到 RootUIComp 或与 RootUIComp 分离时调用(子 UI 附加关系改变时调用)。
OnUIInteractionStateChanged:当 RootUIComp 的交互状态发生变化时调用(当 UICanvasGroup 组件允许或不允许交互时)。
OnUIChildHierarchyIndexChanged:调用 RootUIComp 的 attachchildren->SetHierarchyIndex() 时调用,通常用于布局对子项进行排序。
LGUIPrefabInterface
此接口为在 LGUIPrefab 中管理的 Actor 和 ActorComponent 提供 Awake 函数。
打开蓝图 Actor 或 ActorComponent,点击“类设置”,在“已实现的接口”区域中点击“添加”按钮,输入 LGUIPrefabInterface:
然后“接口”区域会出现两个功能:
唤醒 :当 LGUIPrefab 完成加载时调用。这称为晚于 BeginPlay。
EditorAwake:与 Awake 函数相同,但仅在编辑模式下执行。
注意!!! 预制件中的唤醒执行顺序:层级较高的脚本将更早执行,因此根 Actor 上的脚本将执行第一个,最低 Actor 上的脚本将执行最后一个。Actor 先执行,然后在组件上执行。当在同一预制件中时,此 Awake 的执行时间晚于所有 LGUILifeCycleBehaviour 的 Awake。
评论