虛幻4藍圖編譯剖析(二)

2016-10-25 23:10 by 風戀殘雪, 50 閱讀, 0 評論, 收藏編輯

虛幻4編譯相關術語和類圖

虛幻引擎中的藍圖編譯跟常規(guī)的程序編譯多少是有一些不同的地方,但是基本原理是相通的。我們以普通的類藍圖為例,一個類中包含多個圖,每個圖中又可以包含一些子圖。一個圖會包含很多的節(jié)點(UEdGraphNode),每個節(jié)點可以包含若干引腳(UEdGraphPin)用來連接兩個節(jié)點。節(jié)點又分為執(zhí)行節(jié)點和純節(jié)點(Pure node,上面沒有執(zhí)行引腳)。還有一個模式類(UEdGraphSchema)用于驗證語法是否正確等。類圖如下所示:

圖(UEdGraph)

虛幻4中許多其它的也是使用圖來實現(xiàn)的,所以它也有許多的派生類,比如UAIGraph、UAnimationGraph、UAnimationStateMachineGraph、UMaterialGraph等等。類圖如下所示:

節(jié)點(UEdGraphNode)

一個有向無環(huán)圖是由無數(shù)節(jié)點組成的,這個節(jié)點就是UEdGraphNode,因為上面提到的圖中有支持各種功能的圖,所以也就有各種各樣的節(jié)點,下面我們只摘取一些節(jié)點類型,由于我們重點是講解藍圖編譯,所以我們把主要精力放在UK2Node上面,這個節(jié)點是所有藍圖節(jié)點的基類。類圖所示:

引腳(UEdGraphPin)

每個節(jié)點上可以有多個節(jié)點,輸入、輸出節(jié)點以及參數(shù)引腳等等,這些引腳用于記錄跟哪些引腳相連、類型、默認值等。

 

模式(UEdGraphSchema)

用于語法檢查(看兩個引腳是否可以相連、嘗試連接引腳)等功能,如上面所有因為有多種圖所以就需要多種模式。藍圖使用的是UEdGraphSchema_K2,動畫以及UMG會有自己的Schema。類圖如下所示:

FKismetCompilerContext

真正執(zhí)行編譯工作的類,每編譯一次就會生成一個新的實例,用來存儲編譯類的引用以及藍圖等。整個編譯過程又分為好多步,是在Compile()函數(shù)里面做的。

FKismetFunctionContext

持有編譯一個函數(shù)的所有信息,包括指向相關圖(UEdGraph)的引用、屬性以及生成的函數(shù)等。

FBlueprintCompiledStatement

網(wǎng)友評論