Lyra學習筆記 Experience流程梳理

目錄

  • 前言
  • 1 創建
  • 2 加載
  • 3 Deactivate
  • 4 總結與圖示

前言

這篇主要將視角放在Experience的流程,所以不會涉及一些更深的東西

之后ULyraExperienceManagerComponent簡稱為EMC

1 創建

完事開頭難,首先找到了管理Experience的組件,那么它的初始化位置在哪?
其作為ALyraGameState的成員,在構造函數中用CreateDefaultSubobject創建。

//LyraGameState.h
private:// Handles loading and managing the current gameplay experienceUPROPERTY()TObjectPtr<ULyraExperienceManagerComponent>ExperienceManagerComponent;//LyraGameState.cpp
ALyraGameState::ALyraGameState(const FObjectInitializer& ObjectInitializer): Super(ObjectInitializer)
{...ExperienceManagerComponent = CreateDefaultSubobject<ULyraExperienceManagerComponent>(TEXT("ExperienceManagerComponent"));...
}

2 加載

結合EMC中的這個枚舉梳理,初始為Unloaded

//LyraExperienceManagerComponent.h
ELyraExperienceLoadState LoadState = ELyraExperienceLoadState::Unloaded;
//其定義
enum class ELyraExperienceLoadState
{Unloaded,Loading,LoadingGameFeatures,LoadingChaosTestingDelay,ExecutingActions,Loaded,Deactivating
};

結合之前的地圖加載流程分析,加載的流程開始于ULyraExperienceManagerComponent::SetCurrentExperience->

ULyraExperienceManagerComponent::StartExperienceLoad中LoadState轉為Loading->
ULyraExperienceManagerComponent::OnExperienceLoadComplete中收集完所有的GameFeaturesToEnable后,LoadState 轉為LoadingGameFeatures->
對于每個GF,執行ULyraExperienceManager::NotifyOfPluginActivation和UGameFeaturesSubsystem::Get().LoadAndActivateGameFeaturePlugin->

先忽略測試用狀態LoadingChaosTestingDelay

ULyraExperienceManagerComponent::OnExperienceFullLoadCompleted中狀態轉為ExecutingActions并開始執行Actions,執行順序為Experience本身Acitons中的每一個Action、遍歷ActionSets,每一個ActionSets的Actions的每一個Action,對于單個Action,順序執行OnGameFeatureRegistering()、OnGameFeatureLoading()、OnGameFeatureActivating(Context)->
Action執行完成后,狀態進入Loaded,然后分別是OnExperienceLoaded三個優先級的多播

3 Deactivate

EndPlay觸發DeActive->
DeActive涉及的GameFeature->
狀態轉為Deactivating->
同理按順序觸發每個Action的OnGameFeatureDeactivating、OnGameFeatureUnregistering()->
狀態轉為Unloaded ,CurrentExperience = nullptr;

4 總結與圖示

在這里插入圖片描述
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/83151.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/83151.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/83151.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Ubuntu下編譯mininim游戲全攻略

目錄 一、安裝mininim 軟件所依賴的庫&#xff08;重點是allegro游戲引擎庫&#xff09;二、編譯mininim 軟件三、將mininim打包給另一個Ubuntu系統使用四、安卓手機運行mininim 一、安裝mininim 軟件所依賴的庫&#xff08;重點是allegro游戲引擎庫&#xff09; 1. 用apt-get…

SMT貼片制造流程關鍵環節解析

內容概要 現代電子制造領域中&#xff0c;SMT&#xff08;表面貼裝技術&#xff09;作為核心工藝&#xff0c;其流程的精密性與穩定性直接決定產品性能與生產良率。本文以SMT貼片制造流程為主線&#xff0c;系統解析焊膏印刷、元器件貼裝、回流焊接三大核心工藝的技術要點。其…

HTTP/2與HTTP/3特性詳解:為你的Nginx/Apache服務器開啟下一代Web協議

更多服務器知識&#xff0c;盡在hostol.com 嘿&#xff0c;各位站長和服務器管理員朋友們&#xff01;咱們天天跟網站打交道&#xff0c;都希望自己的網站能像火箭一樣快&#xff0c;用戶體驗“嗖嗖”的。但你知道嗎&#xff1f;除了服務器硬件配置、代碼優化、CDN加速這些“常…

pytest 常見問題解答 (FAQ)

pytest 常見問題解答 (FAQ) 1. 基礎問題 Q1: 如何讓 pytest 發現我的測試文件&#xff1f; 測試文件命名需符合 test_*.py 或 *_test.py 模式測試函數/方法需以 test_ 開頭測試類需以 Test 開頭(且不能有__init__方法) Q2: 如何運行特定測試&#xff1f; pytest path/to/t…

【前端】SPA v.s. MPA

鏈接&#xff1a;頁面結構 誤區 頁面結構管理有兩種常見方式&#xff1a;路由形式 和 組件形式。路由形式 對應MPA &#xff0c;組件形式對應SPA ? 誤區 1&#xff1a;路由形式 MPA? 路由是 SPA 和 MPA 共有的概念&#xff0c;區別在于路由映射的對象&#xff1a; MPA 的…

Matlab數據類型

本篇介紹我在南農matlab課程上的所學&#xff0c;我對老師ppt上的內容重新進行了整理并且給出代碼案例。主要內容在矩陣。如果真的想學matlab&#xff0c;我不認為有任何文檔能夠超過官方文檔&#xff0c;請移步至官網&#xff0c;本篇說實話只是寫出來給自己和學弟學妹作期末復…

代碼隨想錄算法訓練營 Day58 圖論Ⅷ 拓撲排序 Dijkstra

圖論 題目 117. 軟件構建 拓撲排序&#xff1a;給出一個有向圖&#xff0c;把這個有向圖轉成線性的排序就叫拓撲排序。 當然拓撲排序也要檢測這個有向圖是否有環&#xff0c;即存在循環依賴的情況&#xff0c;因為這種情況是不能做線性排序的。所以拓撲排序也是圖論中判斷有向…

vscode中launch.json、tasks.json的作用及實例

文章目錄 launch.json是什么作用多環境調試簡單實例進階使用核心配置項解析調試第三方程序 launch.json是什么 顧名思義&#xff1a;它是在.vscode文件夾下的launch.json&#xff0c;所以是vscode啟動調試的配置文件。總結&#xff1a;通過定義調試參數、環境變量和啟動方式&a…

NeRF PyTorch 源碼解讀 - 體渲染

文章目錄 1. 體渲染公式推導1.1. T ( t ) T(t) T(t) 的推導1.2. C ( r ) C(r) C(r) 的推導 2. 體渲染公式離散化3. 代碼解讀 1. 體渲染公式推導 如下圖所示&#xff0c;渲染圖像上點 P P P 的顏色值 c c c 是累加射線 O P → \overrightarrow{OP} OP 在近平面和遠平面范圍…

標題:2025海外短劇爆發年:APP+H5雙端系統開發,解鎖全球流量與變現新大陸

描述&#xff1a; 2025年出海新風口&#xff01;深度解析海外短劇系統開發核心&#xff08;APPH5雙端&#xff09;&#xff0c;揭秘高效開發策略與商業化路徑&#xff0c;助您搶占萬億美元市場&#xff01; 全球娛樂消費模式正在劇變。2025年&#xff0c;海外短劇市場已從藍海…

React JSX語法介紹(JS XML)(一種JS語法擴展,允許在JS代碼中編寫類似HTML的標記語言)Babel編譯

在線調試網站&#xff1a;https://zh-hans.react.dev/learn 文章目錄 JSX&#xff1a;現代前端開發的聲明式語法概述JSX的本質與工作原理什么是JSXJSX轉換流程 JSX語法特性表達式嵌入&#xff08;JSX允許在大括號內嵌入任何有效的JavaScript表達式&#xff09;屬性傳遞&#xf…

Unity UI系統中RectTransform詳解

一、基礎代碼示例 public GameObject node; var rect node.GetComponent<RectTransform>();Debug.Log($"anchoredPosition----{rect.anchoredPosition}"); Debug.Log($"offsetMin.x--{rect.offsetMin}"); Debug.Log($"offsetMax.x--{rect.of…

【數據庫】并發控制

并發控制 在數據庫系統&#xff0c;經常需要多個用戶同時使用。同一時間并發的事務可達數百個&#xff0c;這就是并發引入的必要性。 常見的并發系統有三種&#xff1a; 串行事務執行&#xff08;X&#xff09;&#xff0c;每個時刻只有一個事務運行&#xff0c;不能充分利用…

我們來學mysql -- “數據備份還原”sh腳本

數據備份&還原 說明執行db_backup_cover.sh腳本 說明 環境準備&#xff1a;來源數據庫(服務器A)&#xff1b;目標數據庫(服務器B)dbInfo.sh腳本記錄基本信息 來源庫、目標庫的ip、port及執行路徑 # MySQL 客戶端和 mysqldump 的路徑 MYSQL_CLIENT"/work/oracle/mysql…

【NLP 78、手搓Transformer模型結構】

你以為走不出的淤泥&#xff0c;也遲早會云淡風輕 —— 25.5.31 引言 ——《Attention is all you need》 《Attention is all you need》這篇論文可以說是自然語言處理領域的一座里程碑&#xff0c;它提出的 Transformer 結構帶來了一場技術革命。 研究背景與目標 在 Transfo…

深入理解CSS常規流布局

引言 在網頁設計中&#xff0c;理解元素如何排列和相互作用至關重要。CSS提供了三種主要的布局方式&#xff1a;常規流、浮動和定位。本文將重點探討最基礎也是最常用的常規流布局&#xff08;Normal Flow&#xff09;&#xff0c;幫助開發者掌握頁面布局的核心機制。 什么是…

樹結構詳細介紹(javascript版)

樹結構的基本概念 樹是一種非線性數據結構&#xff0c;由節點和連接節點的邊組成。與線性數據結構&#xff08;如數組、鏈表&#xff09;不同&#xff0c;樹具有層次結構&#xff0c;非常適合表示有層次關系的數據。 樹的基本術語 節點 (Node)&#xff1a; 樹中的基本單元&a…

element-plus bug整理

1.el-table嵌入el-image標簽預覽時&#xff0c;顯示錯亂 解決&#xff1a;添加preview-teleported屬性 <el-table-column label"等級圖標" align"center" prop"icon" min-width"80"><template #default"scope"&g…

RabbitMQ和MQTT區別與應用

RabbitMQ與MQTT深度解析&#xff1a;協議、代理、差異與應用場景 I. 引言 消息隊列與物聯網通信的重要性 在現代分布式系統和物聯網&#xff08;IoT&#xff09;生態中&#xff0c;高效、可靠的通信機制是構建穩健、可擴展應用的核心。消息隊列&#xff08;Message Queues&am…

零基礎遠程連接課題組Linux服務器,安裝anaconda,配置python環境(換源),在服務器上運行python代碼【3/3 適合小白,步驟詳細!!!】

遠程連接服務器 請查閱之前的博客——零基礎遠程連接課題組Linux服務器&#xff0c;安裝anaconda&#xff0c;配置python環境&#xff08;換源&#xff09;&#xff0c;在服務器上運行python代碼【1/3 適合小白&#xff0c;步驟詳細&#xff01;&#xff01;&#xff01;】&am…