1. 程式人生 > >[UE4教程] UE4藍圖總結(入門)

[UE4教程] UE4藍圖總結(入門)

轉自:http://www.manew.com/thread-90908-1-1.html

使用引擎版本:4.10.2

這篇總結一下藍圖的基本使用,有的內容沒有配圖,所以需要自己去操作一下。

變數
和程式碼中的變數是一樣的,藍圖也有變數,共有私有的區分,可編輯不可編輯(常量),變數型別,變數與變數之間的型別轉換,引用型別,靜態的變數,容器。

定義新變數
方法1:在左側的變數列表上點選增加變數按鈕
方法2:在藍圖操作介面中,在某個變數的引腳處右鍵,在彈出的選單中點選提升為變數。

變數型別
可以選擇的變數型別有:
常用型別
int
float
boolean
string
text
位元組(0-255)
vector(xyz)
rotator(旋轉)
transform(位移+旋轉+縮放)
結構體

列舉型別
介面

普通型別轉換
如果2個變數之間可以進行轉換,那麼就直接把2種類型的變數引腳相接,中間會自動產生一個轉換節點。

結構體變數型別的break和make
在藍圖編輯器介面中。從一個變數型別的引腳拖出選擇選單,搜尋break方法或make方法,通過這2個方法,可以對結構體變數內的基本型別或結構體型別,進行拆分或組合,從而達到型別轉換的效果。

引用和類
如果在世界中存在這個類的例項,並且想用這個例項,就用引用型別。
如果在世界中不存在這個類的例項,就用類型別。
當然簡單可以這麼理解,具體看實際需要。

列舉型別
如果要使用自定義列舉型別,需要在內容編輯器中,提前建立一個列舉型別的檔案,然後才能在藍圖類中選擇到自定義型別。

變數的get和set
對於基本型別和結構體型別的get和set用法上,可以簡單的理解為,get就是獲取變數的值,set就是設定變數的值。
對於類型別或引用型別來說,可能就比較複雜了:
get引用可以理解為得到一個例項化物件,get類型別可以理解為得到了這個型別的結構,如果在這個類本身的藍圖中使用類型別,則相當於用了程式碼中的this關鍵字。
set引用相當於替換物件,set類型別,還沒試過。set類型別裡面的屬性,比如一個任務的材質(材質也是一個類),需要先get類型別,然後get metarial,然後create dynamic metarial interface,set新變數,變數型別為材質類,用新的材質替換舊的材質,而不是直接修改材質。

容器
在變數型別的旁邊有個網格小按鈕,點選開啟後,這個就是對應型別的陣列變量了。

流程控制foreach和for
這2個迴圈的在藍圖中是怎麼體現的呢?入參引腳部分是陣列變數,跳出條件,或迴圈開始/結束值。出參引腳部分是元素,元素index,迴圈體引腳,完成迴圈引腳。
方法名:
ForEachLoop
ForEachLoopWithBreak
ForLoop
ForLoopWithBreak
注意如果要用到break,可以在break引腳前加一個自定義事件,在迴圈體中呼叫自定義事件,這樣邏輯比較清晰。當然了,也可以在迴圈體中直接一根白線連到break引腳。

while迴圈
方法名是WhileLoop,當條件成立時迴圈,當條件不成立時跳出。

自定義流程控制
使用者可以自定義流程,比如在while迴圈的每次執行中新增一個延遲,並變成一個方法,但這種修改引擎內部流程控制的行為,是有風險的。
操作步驟:
在內容瀏覽器的右下角,勾選,顯示引擎內容
在引擎內容中,搜尋,StandardMacros
仿照while迴圈寫一個自己的迴圈,注意新增分類
儲存後,在自己的藍圖中呼叫

介面和事件
藍圖類可以繼承其他藍圖類或C++寫好的類,同樣可以繼承藍圖介面,而且是多繼承哦,這就可以通過定義藍圖介面,規範子類方法的定義。
事件就是一個用來觸發的入口,比如單擊事件,開始事件,時鐘事件

藍圖介面
步驟:
在內容編輯器中,新建藍圖介面
定義方法名,入參出參,所屬目錄型別
在新建的藍圖類中,點選類設定,選擇繼承某個介面,
在藍圖中實現介面中的類,這時,介面方法會變成事件的形式存在於新的藍圖類中

事件
引擎中有很多已經寫好的事件,直接用就行了。
使用者可以自定義事件,供別的藍圖類呼叫。
新增自定義事件的操作步驟:
右鍵撥出目錄
搜尋custom

事件排程器
通過事件排程器可以進行藍圖與藍圖之間的通訊,它可以把一個事件的名字改變成另一個名字。在我測試的時候好像這個通訊必須寫在關卡藍圖中。

關於構建指令碼
這個指令碼是預設被創建出來的。什麼時候會執行裡面的邏輯呢?在每次物件被改變的時候都執行一次,物件被改變包括,被生成,位移,縮放,被修改屬性這種操作。

關於事件列表
事件列表中描述了這個物件有哪些事件,常見的事件有beginPlay,tick,如果加上碰撞器元件,可以加個collisionBegin之類的事件,用於響應碰撞器觸發。或者,響應玩家的輸入,input什麼的,按鍵啊,手柄啊,and so on。

結束語
還有一些藍圖內容沒提到,因為我也才剛學,好像還有個BluePrinttable,但現在不在我的學習列表內,慢慢來吧,後面再改。