UE4 游戲模塊初始化順序


最近看教學,有個講解UE4初始化順序的,記錄一下。

首先創建一個Actor,Character,GameInstance,GameMode,LevelScriptActor(關卡),PlayerController。

 首先看一下actor的生命周期

Actor的頭文件對於生成順序注釋是:

我們把actor藍圖直接拖入ue關卡中的話,應該會走從磁盤加載的流程。

已位於關卡中的 Actor 使用此路徑,如 LoadMap 發生時、或 AddToWorld(從流關卡或子關卡)被調用時。

  1. 首先調用構造函數,包/關卡中的 Actor 從磁盤中進行加載。

  2. PostLoad - 在序列化 Actor 從磁盤加載完成后被調用。

  3. InitializeActorsForPlay

  4. 為未初始化的 Actor 執行 RouteActorInitialize(包含無縫行程攜帶)

    1. PreInitializeComponents - 在 Actor 的組件上調用 InitializeComponent 之前進行調用

    2. InitializeComponent - Actor 上定義的每個組件的創建輔助函數。

    3. PostInitializeComponents - Actor 的組件初始化后調用

  5. BeginPlay - 關卡開始后調用

 

然后在C++中,分別在構造函數,PostInitializeComponents,BeginPlay,tick函數后面打印下log(時間順序從下往上)。

 

上面的解釋:

GameInstance是在world生成之前就已經存在的一個object,世界存在於它下面的WorldContext,所以一般用來存儲整個游戲中的一些數據。 切換world或者level其實就是更換下它下面的數據。

所以在上面的打印之前,先調用GameInstance的init(),然后創建世界。 

創建世界下面的關卡,以及關卡下所有的actor

然后讀取worldsetting下的gamemode

打印順序並不是嚴格按照順序來的。

 

然后開始調用beginplay

我們在HUD的beginplay下面創建了widget

所以在HUD的beginplay后調用widget的構造函數。

最后進行Tick函數。

 

內容部分來源於https://didi.ke.qq.com/。

學習ue4 c++可以看看這個大佬的教程,很棒。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM