您當前的位置:首頁 > 書法

目錄·藍圖擴充套件概述

作者:由 房燕良 發表于 書法時間:2019-10-01

虛幻引擎的藍圖是一種基於節點的視覺化指令碼程式設計系統,對它的擴充套件也就主要是生成新的功能節點了。目前在工作中要到的藍圖擴充套件方式主要有以下幾種:

藍圖宏(Blueprint Macros)可以把一系列節點組成的操作包裝成一個節點;

使用C++編寫藍圖可呼叫的UFunction,則藍圖編輯器會自動生成對應的藍圖節點,這是最常用的一種方式;

透過派生藍圖節點的基類:class UK2Node,可以靈活的定製節點的各種行為,典型的是“動態新增/刪除針腳(pin)”的需求。這個派生類對應的功能邏輯主要透過過載父類的兩個行為介面來實現:Expand Node和Node Handling Functor。

這個專欄主要是談C++程式設計的擴充套件方式,所處藍圖宏就不談了,官方的文件說的比較清楚,也很易用。一般性的UFunction擴充套件方式,官方文件也比較詳細,也就不贅述了。

這個專欄主要講2,3中的內容,特別是官方沒什麼文件的那些功能如何實現。具體的內容規劃如下(以下文章建議按順序閱讀):

透過實現一個派生類,輕鬆完成非同步操作的藍圖節點封裝:

透過自定義Thunk函式實現指出“萬用字元”引數的“UFunction模板函式”節點:

詳細講解“透過派生class UK2Node”建立自定義藍圖節點的步驟:

實現藍圖節點的動態新增/刪除Pin:

透過派生FNodeHandlingFunctor 實現自定義class UK2Node派生類自定義藍圖節點的編譯,控制編譯過程中statement、terminal、net的生成或配置:

透過講解藍圖編輯器的技術架構,以及藍圖虛擬機器的執行機制,深入的理解藍圖:

以上這些內容,主要是筆者透過閱讀引擎原始碼,加上一些試驗驗證之後,總結出來的。希望對大家有所幫助。如果有不夠準確的地方,還請指出。:)

最後,夾帶點私貨吧:

這是我的GitHub Page,歡迎訪問。:D

標簽: 藍圖  節點  自定義  UFunction  Class