導航:首頁 > 源碼編譯 > 藍圖編譯過程

藍圖編譯過程

發布時間:2025-06-29 21:54:35

⑴ 從藍圖載入一張紋理開始理解UE4的資源載入(六)——LoadImports

在Unreal Engine 4中,從藍圖載入紋理資源並處理Import中的依賴包載入機制的過程如下

  1. 初始狀態

    • 所有Import對象的XObject屬性初始為null。
  2. 查找已載入對象

    • 程序調用FindExistingImport方法,檢查對應對象是否已載入至內存。
  3. 處理Outer屬性

    • 每個Import都關聯一個Outer屬性,表示其依賴關系。
    • 若Outer為Null,表示該Import的XObject為UPackage,程序將調用StaticFindObjectFast方法查找UPackage。
    • 若Outer為Import,則需遞歸調用FindExistingImport方法,直至找到UPackage。
  4. XObject查找與處理

    • 若XObject成功找到,則該Import處理完成,程序將提前跳出,處理下一個Import。
    • 若未找到,程序將繼續檢查Outer屬性。
  5. Outer屬性不為Null時的處理

    • 若Outer不為Null,程序將找到Outermost,並將其bImportPackageHandled屬性置為true,防止重復處理。
    • 將Outermost作為新的Import進行處理。
  6. 獲取FAsyncPackage

    • 使用UPackage的LinkerLoad方法找到FAsyncLoader。
    • 在內存中查找對應FAsyncPackage。
    • 若非編譯型Package且未在內存中找到,則在ALT中查找FAsyncPackage。
    • 若仍找不到,則創建PendingPackage,並通過InsertPackage添加到載入事件系統中。
  7. 添加依賴關系

    • 在得到FAsyncPackage後,需要添加對應的依賴關系。
    • 這分為已找到的依賴和新創建的依賴兩種情況。
  8. 處理完成

    • 當所有Import處理完畢,程序將Package狀態更新為WaitingForImportPackages。
    • 調用方法,回溯至上一階段,加入Package_SetupImports節點。
    • 由於bWasHeldForLater參數為true,且無其他前置條件,Package_SetupImports節點能夠順利觸發,從而添加下一階段事件SetupImports。

總結:UE4在處理從藍圖載入紋理資源時,通過復雜的依賴關系管理和載入機制,確保所有依賴的資源能夠正確載入和處理。這一過程中,對Import對象的查找、XObject的獲取、依賴關系的添加以及Package狀態的更新等步驟都至關重要。

⑵ UE4理論介紹梳理

UE4理論介紹梳理如下

一、藍圖系統 定義與功能:藍圖是UE4中一個強大且直觀的邏輯構建工具,允許開發者通過拖拽和連接節點的方式創建游戲邏輯,無需編寫代碼。 運作原理:藍圖在虛擬機環境中運行,修改後無需重新編譯,大大提高了開發效率。 主要區分:藍圖主要分為宏、函數和事件三類,通過事件或特定標記的函數實現與C++的交互。 通信機制:藍圖間的通信包括直接操作、事件調度器以及介面,特別是在處理渲染和3D流程時顯得尤為重要。

二、3D渲染技術 渲染管線:UE4的3D渲染過程涉及數據准備、頂點處理、光柵操作和像素處理四個關鍵階段。 關鍵步驟:屏幕映射、光柵化和片元著色器是決定畫面效果的重要步驟。像素點的顯示包含裁切、透明、模板和深度測試後的混合寫入遮罩。 渲染功能:包括遮擋處理、幾何體渲染、路徑選擇、剔除與渲染命令,以及GPU渲染技術如延遲渲染、半透明處理和後處理。 性能優化:利用GPU分析器、調整光照復雜度、靜態光重疊查看和光照貼圖密度等工具,深入理解反射計算方式,以優化游戲性能。

三、編譯與內存管理 編譯系統:UE4的編譯系統由UHT解析頭文件和UBT編譯鏈接組成,類型系統設計精細,便於遍歷和封裝屬性和方法。 內存管理:UE4支持內置的垃圾回收和智能指針,通過簇化技術如UMaterial和UParticleSystem提升性能。 標記宏與元數據:了解標記宏如UCLASS、UPROPERTY和UFUNCTION,以及元數據的meta=標記,能優化編輯器行為並控制資源打包。

總結:掌握UE4的藍圖系統、3D渲染技術和編譯與內存管理,是深入理解UE4理論基礎的關鍵。這些技術將為你的游戲開發之旅打下堅實的基礎,幫助你創造出更加精彩的游戲作品。

⑶ UE4藍圖(2)

UE4藍圖是一種可視化編程工具,提供了一種與標准腳本語言不同的方式來編寫腳本。它要求每個節點的顯式線性執行,但與普通腳本語言的執行流方式類似。以下內容將詳細解釋UE4藍圖中的變數類型、如何處理這些變數以及圖表中節點的執行。


變數


變數可以在藍圖中採用多種類型創建,包括數據類型(如布爾型、整數型和浮點型)以及用於保存對象、Actor和類等引用類型。這些變數通過顏色編碼易於識別。


藍圖變數

藍圖變數用於保存值或引用世界場景中的對象或Actor。這些屬性既可以由包含它們的藍圖內部訪問,也可以通過外部訪問,以便設計師使用關卡中的藍圖實例修改它們的值。藍圖變數顯示為包含變數名稱的圓形框。


變數類型

可以創建各種類型的變數,包括數據類型(如布爾、整數和浮點)以及用於保存對象、Actor和特定類等對象的引用類型。此外,還可以為每種變數類型創建陣列。這些類型採用顏色編碼以便識別。


「我的藍圖」選項卡中的變數

在「我的藍圖」選項卡中,可以將自定義變數添加到藍圖,同時列出所有現有變數,包括在組件列表中添加的組件實例變數或通過將值提升到圖表中的變數而創建的變數。


創建變數

通過簡單步驟可以在藍圖中創建變數。首先,創建一個新變數,然後輸入名稱並進入細節面板以調整變數的屬性。可以定義變數如何使用或訪問,並設置默認值和序列化選項。


默認值

為變數設置默認值需要先編譯藍圖。通過細節面板可以定義變數屬性,包括臨時和保存游戲序列化選項。


序列化選項

序列化選項允許定義變數是否序列化以及在載入時是否以零填充。此外,還可以設置變數是否在保存游戲時序列化。


公開變數

通過將變數設為公開,可以在藍圖之外修改變數。在細節面板中選擇眼睛圖標以將其設為公開,並啟用「可編輯實例」框以允許實例編輯。


生成時公開

生成時公開允許設置變數是否在生成其所在的藍圖時可訪問。例如,設置為生成時公開的變數可以在生成藍圖時直接訪問。


向過場動畫公開

若需要Sequencer或Matinee影響變數的值,可選擇「向過場動畫公開」。注意,Matinee功能將在UE4版本4.23後被移除。


提升為變數

通過右鍵單擊輸入或輸出引腳並選擇「提升為變數」選項,可以將變數提升至藍圖層級,從而在圖表中訪問。


訪問藍圖中的變數


訪問藍圖中的變數有兩種方式:使用獲取節點來獲取變數的值,或使用設置節點來設置變數的值。可以通過圖表中的右鍵菜單或使用快捷鍵創建這些節點。


編輯變數

可以在執行之前設置變數值或設置變數的默認值。通過類默認設置打開細節面板,輸入所需的默認值。若要重命名變數,右鍵單擊名稱並選擇「重命名」。在細節面板中,可以為變數設置所有屬性。


總結


UE4藍圖提供了一種直觀且強大的方式來處理變數和其他數據類型。通過遵循上述指南,您可以有效地創建、訪問、編輯和管理藍圖中的變數,從而實現更復雜的邏輯和功能。

閱讀全文

與藍圖編譯過程相關的資料

熱點內容
移動磁碟加密無法格式化怎麼辦 瀏覽:626
530a單片機技術資料 瀏覽:491
程序員辭職原因 瀏覽:752
程序員自學編程靠譜嗎 瀏覽:91
加密在網關 瀏覽:181
如何在本機上搭建代理伺服器 瀏覽:114
linux從入門到精通第2版 瀏覽:369
ubuntuopenwrt編譯環境 瀏覽:193
python求一組隨機數的最大值 瀏覽:871
雲南首選dns伺服器地址 瀏覽:445
如何連接伺服器的db2 瀏覽:908
java線程怎麼結束 瀏覽:380
越玩越解壓的東西 瀏覽:127
伺服器多顯卡交火有什麼用 瀏覽:517
單片機的崗位有哪些 瀏覽:413
有樂中文網app叫什麼名 瀏覽:763
linuxopenvpn客戶端 瀏覽:101
壓縮機高壓側 瀏覽:937
什麼app可以看十三號倉庫 瀏覽:761
kalilinux啟動盤 瀏覽:20