藍圖用戶指南
由於藍圖就是個可視化的腳本系統,那么一個程序語言中的基本概念也就都存在。下面我們簡單來介紹下藍圖中的一些基本概念。
變量
概述
Variables(變量) 是存放一個值或引用世界中的一個Object或Actor的屬性。這些用戶界面 內部訪問,或者通過設置使得可以在外部進行訪問, 以便應用放置在關卡中的藍圖實例的設計人員可以修改它們的 值。
變量顯示為圓角方框,方框內包含了變量的名稱:
變量類型
您可以創建各種類型的變量,包括數據類型的變量(比如布爾型、整型及浮點型)及用於存放類似於Object、Actor及特定類的引用型變量。 您還可以創建每種變量類型的數組。每種變量類型都進行了顏色編碼,以方便識別。
藍圖數組
和變量值一樣,藍圖也可以在數組中存儲數據。如果您不熟悉編程術語,您可以把數組想象成為存在於一個單元中的一組變量。
數組僅能存放一種類型的值。比如,布爾型數組僅可以存放布爾值。
數組變量包含一個3x3 的帶顏色網格,表明它們是數組,不是正常的變量。在沒有連接的數組中,其網格的中心是黑的。一旦連接后,整個網格將會可見,如下所示。
數組索引
同時需要注意的一點是,數組中的值的索引值是 從0開始的 ,這意味着第一個索引是 0 而不是1。
流程控制
概述
Flow Control (流程控制)使得能在藍圖中清楚地控制執行的流程。 此種控制可以多種形式進行,基於某些值為真的情況來選擇圖表的某個分支來執行,多次執行某個特定分支,以特定順序執行多個分支,等等。 默認的流程控制操作包括了分支(if語句),循環(for和while語句),門,及序列。
開關節點
開關節點讀取數據輸入,並會基於該輸入值來從匹配的(或可選的默認)執行輸出中發送執行流程。 可用的開關有以下幾種類型: Int (整型),String (字符串型), Name (名稱型),以及 Enum (枚舉型)。
一般而言,開關節點會根據其估算的數據類型擁有執行輸入以及數據輸入。 輸出均為執行輸出。 Enum 開關會自動從 Enum 屬性中生成輸出執行引腳,而 Int, String 及 Name 開關擁有可自定義的輸出執行引腳。
程序中的switch關鍵字,但是它支持更多的類型。
標准流程控制節點
這些節點提供了一系列方法來控制執行的流程
Branch
在面對單個 True/False 判定的情況下,Branch(分支)節點是一種創建基於判斷的流程的簡單方式。 在執行后,分支節點會查找附加的布爾變量的輸入值,並在合適的輸出節點下方來輸出執行脈沖值。其實就是if-else分支。
DoN
DoN節點將會 N 次觸發執行脈沖。 在達到限制后,它將會停止所有的輸出執行,直到脈沖被傳入其 Reset (重置)輸入。
例如,您可以啟動車輛20次,然后在綁定到 Reset (重置)輸入的加油事件被激活前,無法再次啟動車輛。
DoOnce
DoOnce節點-正如名稱所顯示的-將會僅僅觸發執行脈沖一次。 在之后,它將會停止所有的輸出執行,直到脈沖被傳入其 Reset (重置)輸入。 該節點等同於DoN節點中 N = 1 的情況。
我們舉例來說,您可以對一扇開啟的門的節點網絡設置DoOnce,這樣這扇門將僅僅開啟一次。 不過您可以綁定一個觸發事件到Reset(重置)輸入,這樣會導致在觸發器被激活時,門會再次打開。
FlipFlop
FlipFlop節點取入執行輸出並在兩個執行輸出間切換。 其第一次被調用時,將會輸出A。 第二次被調用時,將會輸出B,然后再是A,然后又是B,循環往復。 該節點同時有布爾變量輸出,使您可以追溯輸出A何時被調用。
ForLoop
ForLoop節點的工作原理等同於標准的代碼循環,將會在開始和結束之間的每個索引觸發執行脈沖。就是C++中的for循環可視化版本。
ForLoopWithBreak
ForLoopWithBreak節點包含了能中斷循環的輸入引腳,除此之外,它運行的方式與ForLoop節點非常相似。
Gate
Gate(門)節點用來開啟和關閉執行流。 簡單來說,Enter輸入取入執行脈沖,同時門的當前狀態(開啟或關閉)將會決定這些脈沖是否從Exit輸出中傳出。
MultiGate
MultiGate取入單個數據脈沖並將其傳送到任意數量的潛在輸出。 這個過程隨機按順序發生,可能會循環
Sequence
Sequence (序列)節點使得單個執行脈沖能按順序觸發一系列事件。 節點可能有任意數量的輸出,所有的輸出引腳都會在序列節點一獲得輸入時就被調用。 它們將總是按順序被調用,但不會有任何延遲。 對一般用戶來說,輸出引腳看起來好像被同時觸發了一樣。
WhileLoop
只要特定值為 true ,則WhileLoop節點將會輸出一個結果。 在循環的每個迭代中,它會查看其輸入布爾值的當前狀態。 一旦它讀取到 false ,該循環中斷。
函數
Functions(函數) 是屬於特定 藍圖 的節點圖表,該節點圖表可以執行或者從 藍圖 中的另一個 圖表中進行調用。函數具有一個單一的入口點,由和該函數具有相同名稱的一個節點指定, 該節點包含了一個單一的執行輸出引腳。當從另一個圖表調用函數時,會激活該輸出執行引腳, 促使執行連接網絡。
訪問修飾符
當創建函數時,您可以指定可以訪問及不能訪問這些函數的其他對象。這可以通過設置 Access Specifier(訪問修飾符) 屬性來完成,該屬性可以在選中函數的 詳細信息 面板中找到。跟C++中一樣,有Public Protected Private三種類型。
純函數和非純函數
函數可以是 純函數 也可以是 非純函數 。主要的區別是純函數不會以任何方式修改狀態或者類的成員, 而非純函數可以自由地修改狀態。純函數一般用於 getter 函數 或者僅輸出一個數據值的操作符。
非純函數必須通過在事件圖表中將執行線連接到函數調用節點來顯式地執行。 非純函數通過使用以下這些方式之一進行指定:
- 在代碼中定義的函數的函數聲明中指定 BlueprintCallable 關鍵字。
- 將通過 藍圖編輯器 添加的函數的 Pure(純函數) 復選框保留為未選中狀態。
純函數連接到數據引腳上,當需要依賴於純函數的數據時,編譯器會自動地執行這些函數。這意味着 對於每個連接到純函數上的節點,都會調用一次純函數 。純函數通過使用以下這些方式之一進行指定:
- 在代碼中定義的函數的函數聲明中指定 BlueprintPure 關鍵字。
- 選中通過 藍圖編輯器 添加的函數的 Pure(純函數) 復選框。
創建函數
在藍圖中創建函數
在 Graph(圖表) 模式,從 My Blueprint(我的藍圖) 選卡下,點擊New Function (新建函數)按鈕。
在藍圖接口中創建函數
在 Blueprint Interface(藍圖接口) 中創建函數同在 Class Blueprint(類藍圖) 或 Level Blueprint(關卡藍圖) 中創建函數一樣,但是實現是有很大差別的。
在 Graph(圖表) 模式,從 My Blueprint(我的藍圖) 選卡下,點擊New Function (新建函數)按鈕。
編輯函數
一旦創建了函數,您就需要定義其功能。這個過程需要兩步:
- 創建必要的輸入和輸出參數
- 在您的輸入和輸出之間創建節點網絡來定義函數行為。
調用函數
一旦您創建並定義了您的函數后,就可以在您的事件圖表中調用它。要想創建一個調用您的函數的節點:
- 從 我的藍圖 選卡中拖拽您的函數到事件圖表內的空白處
- 在事件圖表中右擊,或者從適當的執行引腳或數據引腳拖拽鼠標來打開關聯菜單。在關聯菜單中搜索您的函數,然后選中它來添加函數調用節點。
- https://docs.unrealengine.com/latest/CHN/Engine/Blueprints/UserGuide/index.html