2017年5月22日 星期一

70個初心者要懂的Blueprint Node

今天要和大家介紹的是有關Unreal Engine 4 中的核心功能「Blueprint藍圖」。
那什麼是藍圖呢? 我們可以理解為「積木式編程語言」。
積木式編程語言的好處在於只需要懂一些物件導向觀念,邏輯判斷就可做出一個小系統。 

對於純Code苦手的小夥伴們可說是一大神器呀~
那TDAT接下來要和大家分享的是70個初心者要懂的Blueprint Node!





1.Print string node,位於 BP分類「Utilities」→「String




node雖然遊戲中用不到,但對於Bug測試可以起到化腐朽為神奇的功效。
粉紅色的String變數用於接受需要列印的String,
第一個紅色的bolean變數用來選擇是否將String列印到螢幕上,
第二個紅色的bolean變數用於選擇是否將此次列印輸出到Log裡,
藍色的變數用於調整列印String的顏色,
最下面的浮點變數決定列印的內容將會在螢幕上停留多少秒 。









2.Add to viewport node,位於 BP分類「User Interface」→「Viewport

它的功能是將你所做的UI呈現到螢幕上,它會根據UI的原始尺寸平鋪到螢幕上。
User Widget類型輸入變數需要連接你需要的UMG控制項藍圖,
你可以通過add 一個你的UMG控制項藍圖的變數來使它更加靈活。不過在這之前你必須先用create node生成它。

下面的整型變數為它的“優先順序”意思就是當多個UI直接重疊時他會覆蓋在“優先順序”低的上面
如果你不想讓血條出現在遊戲功能表裡面,請設置這一項。










3.Delay node位於 BP分類「Untilities
Flow Control」內


這個 node非常實用,它的作用是延遲。
浮點的輸入變數用於決定延遲的秒數。







4.Event tick,位於BP分類「Add Event」內

每一幀都會執行一次。
輸出的浮點數則是當前遊戲的MS


FPS:幀數越高越好
MS:網路延遲,越低越好
總之這是一個非常常用的 node,但要限制使用它的次數。
因為每一幀都執行計算會較大的耗費電腦的記憶體。


5.Event Beginplay,位於BP分類「Add Event」內


遊戲開始時它將被執行一次,
注意它被執行的時間在函數檢索之後。
如果用在除關卡藍圖或遊戲控制器藍圖之外的一般藍圖,
需要將其放置在場景中才可以被使用。





6.Possess node位於BP分類「Pawn」內

用於人物之間的切換。
如果在遊戲中你死亡的話,你首先需要生成一個「Pawn屍體」。
然後使用此 node附身上去,最後銷毀自己本來的「Pawn屍體」實現復活功能。


上面的遊戲控制器變數需要輸入你當前的遊戲控制器,
下面的Pawn變數,則是你需要附身的「Pawn屍體」。
整個過程你可以理解為,將一個舊玩偶的操作器拿下來,接到另一個沒有操作器的新玩偶上。
當然,你可以使用此 node,附身到任何關卡上存在的pawn上。
它只存在於伺服器之中,當然,如果遊戲是單機則無需考慮此項。
一般此 nodeSpawn Actor node一同使用,詳情請見


7.Un possess node,位於BP分類「Pawn」內

它的功能是將遊戲控制器與「pawn」之間斷開連接(鎖鏈)
僅此而已,它同possess node一樣,並不會刪掉原有的「pawn」。


就像將人偶的線扯下來丟在那裡,
如果你沒將輸入寫進遊戲控制器裡面,而是直接寫進了「pawn」裡面
那麼此時視角將無法移動,因為遊戲控制器已經與此「pawn」斷開連接了。
遊戲控制器變數輸入當前正在使用的controller,通常用get player controller來獲取。


8.DestroyActor node位於 BP分類「Utilities」內



它用於刪除場景中已經存在的Actor,因為pawnActor的子類。
所以此 node也可以刪除人物,可以與possess node搭配使用。
node會徹底刪除掉場景中的Actor並立即釋放記憶體。
Actor變數輸入用於確定需要刪除的物件,
也可以使Actor的子類。






9.Detach from Controller Pending Destroy node位於BP分類「Pawn」內

它的功能與un possess node類似,不同的是unpossess node的輸入值是控制器,

node的輸入值是「pawn前者是控制器主動脫離「pawn後者是「pawn」主動脫離控制器。
二者在功能上並沒有什麼本質上的差別,
都是使控制器與所控制的「pawn」斷開連接




10.Branch node,位於BP分類「Untilities」→
Flow Control」內


它的作用我想在整個程式設計世界都佔有重要位置,
它是一個判斷式。
比如:這個事件是True嗎?
如果是True的,就走上面這條路,
如果不是True的,就走下面那條路。
boolean類型的輸入變數是一個可以控制邏輯變更判斷的開關,通常它會提升為變數,以便在其他地方修改這個boolean值,
在你覺得有必要走那條判斷的時候,直接控制開關就行了。
快捷鍵:於藍圖區中按住鍵盤B鍵後滑鼠點擊左鍵。



11.Is local player controller node位於BP分類「Pawn」內


它用來判斷所輸入的遊戲控制是否是存儲在本地端的。
根據我的實驗,在正常模式下它始終返回為True
在多人模式下伺服器會返回True,並且返回False。而用戶端則返回為True
我據此推測在多人模式下伺服器會單獨分成兩部分,
一部分是純伺服器(看不到),另一部分類似與用戶端,
儘管它倆全都顯示的名字是(伺服器)
這就可以解釋為什麼會有三個返回值輸出。

這個 node涉及到網路,在此只需瞭解即可,據我所知自訂Event 對網路來說非常重要。網路對新手來說,還是相對複雜的。以後如果涉及網路的我還會加一些我個人的見解。



12.Is Animation Playing node位於BP分類
User Interface」→「Animation」內



它的作用就是判斷UI的控制項藍圖裡面你自己製作的UI Animation是不是處於播放狀態,如果在播放UI Animation,它會返回True

上面的User widget引用輸入,用來確定需要判斷的是哪個控制項藍圖。
下面的In Animation引用輸入,用來確定需要判斷是否播放的UI Animation
如果想得到上面的引用,請先使用create node生成目標控制項藍圖,如果沒有事先生成,你將無法得到上面的變數。(如果你將此 node存放在控制項藍圖內則保持預設即可,同時在其他藍圖裡設置生成這個控制項藍圖。)
如果想得到下面的引用,請直接將此 node存放在控制項藍圖內,這樣可以直接引用UI Animation的變數。(因為我發現UI Animation似乎無法被其他藍圖引用?這只是我的一個猜測)
如果你想創建一個UI Animation,請在控制項藍圖裡找Animation窗口,並創建Animation



13.Is Playing Animation node位於BP分類
User Interface」→「Animation」內


它的功能與Is Animation Playing node相似,這兩個 node存放的位置也相同。

你可以使用它來判斷所輸入的「控制項藍圖變數」是否正在播放UI Animation,如果在播放,就返回True

Is Animation Playing node不同的是,
node判斷的是控制項藍圖內所有的UI Animation,如果你的UI Animation
很多的話建議使用Is Animation Playing node。但此 node更具靈活,打破了UI Animation變數無法在其他藍圖引用的缺點。
因此,此 node可以再控制項藍圖以外的地方使用,並輸出結果與Is Animation Playing node相同。
同樣的是你需要事先生成這個「控制項藍圖」(用create node)。



14.ause Animation node位於BP分類
User Interface」→「Animation」內


它的作用是在播放UI Animation的過程中另其暫停。
上面的User widget引用輸入,用來確定需要判斷的是哪個控制項藍圖。
下面的In Animation引用輸入,用來確定需要暫停播放的UI Animation
右邊的浮點輸出值為:暫停前已播放的UI Animation的時間(秒)。
同樣的是你需要事先生成這個「控制項藍圖」(用create node)。




15.Play Animation node位於BP分類
User Interface」→「Animation」內


它的作用是播放指定的UI Animation
User widget引用輸入,用來確定需要判斷的是哪個控制項藍圖。
同樣的是你需要事先生成這個「控制項藍圖」(用create node)。

In Animation引用輸入,用來確定需要播放的UI Animation
Start at Time浮點類型的輸入變數,用於輸入你想在第幾點幾秒以後播放UI Animation(默認為0
Num Loops to Play整型的輸入變數,用於輸入你想播放幾遍相同的UI Animation,當值為0時為迴圈播放。
Play Mode枚舉類型的輸入變數,下面下拉清單的選項分別為
Forward(正方向播放)
Reverse(反方向播放)
Ping Pong(先正再反)







16.Play Animation To node位於BP分類
User Interface」→「Animation」內
 


它與Play Animation node的功能極其相似。其功能請參照Play Animation node

與之不同的是此 node多了一個浮點類型的輸入變數,(End at Time)。

我覺得是Play Animation node的升級版,它可以限定播放UI Animation的範圍,而不是直接播放全部,儘管Play Animation node
已經擁有限定開始時間的功能了。

個人理解: node功能多,所需要執行的效率就越低。所以推薦使用Play Animation node,而不是此 node









17.Reverse Animation node位於BP分類
User Interface」→「Animation」內


它的功能是反方向播放所選定的UI Animation
(我認為這個 node非常的沒用,因為Play Animation node已經擁有相同且更為高級的功能了)

不過我認為它的效率一定要高於Play Animation node
上面的User widget引用輸入,用來確定需要反向播放的是哪個控制項藍圖。
下面的In Animation引用輸入,
用來確定需要反向播放的UI Animation
同樣的是你需要事先生成這個「控制項藍圖」。(用create node)。




18.Set Num Loops to Play node位於BP分類「User Interface」→「Animation」內



它的功能是給播放的UI Animation設置播放次數,當整形變數為零時迴圈播放。
node更像Play Animation node功能的一個Branch。它的功能與其完全一樣。

上面的User widget引用輸入,
用來確定需要播放的是哪個控制項藍圖。
下面的In Animation引用輸入,
用來確定需要播放的UIAnimation
同樣的是你需要事先生成這個「控制項藍圖」(用create node)。





19.Stop Animation node位於BP分類
User Interface」→「Animation」內


它的作用是停止播放中的UI Animation
它與Pause Animation node的功能類似,不過他並沒有輸出變數。

上面的User widget引用輸入,用來確定需要停止播放的是哪個控制項藍圖。
下面的In Animation引用輸入,用來確定需要停止播放的UI Animation
同樣的是你需要事先生成這個「控制項藍圖」(用create node)。




20.Get Display Name node位於BP分類
Utilities」→「Key」內


它的功能用於顯示所輸入的Object因為在虛幻4Object是所有藍圖的基類(頭)。

所以它可以用於輸出任何藍圖的名稱並轉換成String
你可以用Print String node將它顯示出來。
這個功能通常用於測試項目,
比如你想知道是誰被碰撞了,誰被撿起了。

在遊戲中基本用不上。
另外如果需要應用此 node必須應用所輸入的藍圖。如果是“Actor”你必須將其拖拽到關卡中,以便此 node使用。
或者利用個別 node的輸出充當此 node的輸入。



21.Get Display Name node位於位於BP分類「Utilities」→「Key」內


它的功能同樣是顯示藍圖類的名字,
你會發現它與上一個 node只有輸入變成了紫色。

Class類藍圖為紫色,表示是在目錄裡存在的而不用必須應用它,
你可以直接通過下拉清單選擇你需要輸出名字的「Class
你會發現此 node可以選擇比另一個更多的東西。而前面的僅限「Asset
具體有什麼樣的差別,可以通過兩個 node的下拉清單更清楚的看到。



22.Append node位於BP分類「Utilities」→「Array」內


可能你找到的是append array
它的作用是將兩個Array合併,意思就是把下面的Array複製一份,按順序填加進上面Array的末尾。
同時下面的Array保持不變~
首先,你要懂得什麼是Array Array是很多相同變數的組合,
比如玩家清單就是一堆String的組合。它記錄了很多玩家的名字

當然,你不能將兩個不同的Array放入這個 node,儘管它會自動轉換,但我覺得你不會希望這樣做的。
當你將Array add 進去的時候,你會發現發變成其他顏色。




23.Shuffle node位於BP分類「Utilities」→「Array」內


它的功能是打亂Array的順序,
node並不會對Array內的變數做出改變。
Array內的變數們也是有自己的順序和編號的;
比如
-----------Array = 「第一個」,「第二個」,「第三個」
-----------其中,「第一個」編號為0,「第二個」編號為1,「第三個」編號為2

node會打亂這個順序~~
Array打亂順序也是一個程式設計基礎的功能,這個是永久打亂。




24.Clear node位於BP分類「Utilities」→「Array」內


它的功能是刪除掉Array內的所有變數,使其長度變為零。

















25.Resize node位於BP分類「Utilities」→「Array」內



它的功能是設置Array的長度。
 node採用多退少補的原則,Array輸入為需要設置的Array,不限種類。

下面的整形變數為需要設置Array的長度。
(大家不要以為這個 node只能整形Array用哦)

Array內部的變數個數(這裡用元素個數代替),小於所設置的整形個數,則在Array的最末尾補足所設置的整型數。
(自動補充的元素的值全部預設為零,需要重新設置;如果是booleanArray。默認為False

Array元素個數,大於所設置的整形個數,則 node將自動刪掉多餘的元素。
你也可以將整型值設置為負數,那樣不會有任何變化。
node通常用於在不知道將要有多少資料使用時,首先設置一個峰值,以免溢出。



26.Last index node位於BP分類「Utilities」→「Array」內


它用來判斷所選Array一共有幾個元素(變數)。
因為電腦數數是從“0”開始的,所以右側的整型輸出值會比正常個數少一個。

如果你想知道一個房間裡到底有幾個玩家,就可以用到這個 node

Array這類 node如果用到好可以做到化腐朽為神奇的功能。
其次,Array也分一維,二維,三維,
由於個別情況使用方便給Array弄出等級)

就像家譜一樣,和類的繼承有點相似,如果你要記錄棋盤上的棋子。這時一維Array(正常Array)就顯得捉襟見肘了,因為你不知到一個棋子它具體的編號(因為棋子是一個平面),如果用一維Array可能
棋子=58
如果用二維Array就可以~
棋子=6】【4】(第六行第四個)

這樣你就可以更直觀的直接知道你選定的棋子的Array編號了。
我認為多維Array僅僅説明編寫者分清楚而已,他們本質是一樣的。

同樣,三維Array,可以用來標記你家是第幾棟第幾層,第幾號。
通常只用到三維,再往上就沒什麼必要了。







27.Contains ltem node位於BP分類「Utilities」→「Array」內




它的作用是檢查Array裡有沒有這個元素(變數)。
上面的是需要檢查的Array

下面是輸入需要檢查的元素。
如果Array裡面有這個元素,就輸出True,如果沒有就輸出False

如果你把它連上一個Array,你會發現下面的值已經可以直接手動輸入了。
當然,你也可以引入一個變數來充當所需要判斷的元素。




28.Find item node位於BP分類「Utilities」→「Array」內



它的作用是查找所選元素存在於Array的第幾個位置(當然也是減一的)

上面的輸入用於檢測需要判斷的Array
下面的輸入用於輸入需要判斷的元素。
如果輸入的元素不存在於Array之中,那麼返回-1(這個功能和contains node重複)
如果輸入的元素在Array裡有多個則按照Array元素的順序0,1,2,3......來。

首先被檢測到的元素返回編號。直接停止向下面的檢測~~
也就是說如果
Array = 【“野”,“格”,“炸”,“彈”,“棒”】
他們的編號分別是0,1,2,3,4
如果我檢測“野”在這個Array裡第幾個位置,它只會返回0,然後停止,不會再返回4~~
如果我檢測“Yee”則直接返回-1。




29.remove index node位於BP分類
Utilities」→「Array」內


它的作用是指定編號,刪除Array裡的元素。

上面的輸入用於檢測需要刪除元素的Array
下面的整型輸入用於輸入需要刪除的元素編號。

如果被刪除的元素不是最後一個元素,則將後面的元素統一向前移動一個單位。

使其順序不變,元素值不變。
相當於把一張牌從一堆牌中抽走,
剩下的牌會自動覆蓋在原來的牌之上。
Array node有的是輸入Array的元素編號,
有的是直接輸入元素值,使用前請注意。





30.Remove Item node位於BP分類Utilities」→「Array」內



它的功能是,在Array內刪除指定的元素。

上面的輸入用於檢測需要刪除元素的Array
下面的輸入用於輸入需要刪除的元素。

同樣,它也會檢測這個元素在沒在這個Array裡面,
表現形式為:
如果刪除成功boolean值將會返回True,刪除失敗(Array裡沒有這個元素)則返回False

當你指定的元素被發現在Array裡存在多個相同的元素時,也一併刪除



31.Length node位於BP分類Utilities」→「Array」內

它的作用是輸出所選Array的長度。

nodelast index node完全一樣。

讓人哭笑不得的是此 node輸出的內容是從1開始計算的......

last index node是從0開始計算的,所以其結果正好比此 node1


node不太會用到,鑒定完畢











32.Add node位於BP分類Utilities」→「Array」內


它的功能是在所選Array的最後add 一個元素。


上面的輸入用於檢測需要add 元素的Array
下面的輸入用於輸入需要add 的元素。

右側的整型輸出的是所add 的元素所在的編號,(也就是說Array的元素個數)

如果有一個玩家上線了,就把玩家清單裡的元素add 一個。









33.Insert node位於BP分類Utilities」→「Array」內

 它的功能是根據所給的編號位置,為Arrayadd 一個自訂的元素(變數)。




你想這個新元素存在什麼位置都行,
但經過我實驗,你必須輸入原有最大編號以內的數值
(超出這個數會沒有任何反應,我也不知道為啥)


第一個輸入想要add 變數的Array
第二個輸入想要add 的元素變數。
第三個輸入想要add 的位置。

這樣說可能具體一點:
Array = 【“a”,“b”,“c”,“d”,“e”】
它的編號為 01234

這時我add 一個編號為2的元素“g
所以原本的2,3,4就向後移了一位變成了
Array = 【“a”“b”“g”,“c”,“d”,“e”】




34.Add unique node位於BP分類
Utilities」→「Array」內


它的作用是add 所輸入的元素(變數)到數值。

不過他用了一個更為特別的方法,此 node會檢測Array裡存不存在所輸入的元素變數。

如果有就直接退出不add 新元素;
如果沒有,就在Array的末尾add 這個元素(變數)
另外,如果add 成功的話則輸出此元素的編號





35.Get node node位於BP分類Utilities」→「Array」內

 它的功能是根據編號獲取到所選Array裡的元素。




整型輸入為希望獲取到的元素的編號
(如果你不知道你想獲取的元素是第幾號,就請不要用這個 node)。

藍圖 node裡面也有很多以「get」開頭的 node,他們的作用都是獲取東西
他們的輸出值可以像微血管似得,將藍圖直接連接的更為緊密。







36.ForEachLoop node位於BP分類「Utilities」→「Array」內


它的作用是將Array的元素,按照編號的順序,一項一項的不間斷輸出,俗稱「遍歷」。

眾所周知,Array是由很多元素組成的,但是,你沒有辦法將很多的元素同時列出。

電腦只會按照順序將Array裡的所有元素依次輸出,這個過程很快,你可能無法感覺到,不過他們的確是有順序的(這裡忽略時間)。

我想把玩家清單全部列印到螢幕上面,首先此 node會找到第一個玩家輸出,然後回去再尋找第二個玩家,再輸出。

並依次進行,直到最後一個元素被輸出才結束(這叫迴圈)
(你甚至可以弄個上百萬元素的Array,這對電腦來說就是幾秒的事)

左邊輸入需要(遍歷)迴圈輸出的Array
右邊的LoopBoby(不管這個 node工作完不完成,直接開啟下一個)
completed(在遍歷結束時調用)
Array element(依次輸出遍歷出來的元素)
Array index(依次輸出上面所輸出來的變數的編號)







37.ForEachLoopWithBreak node位於BP分類
Utilities」→「Array」內


它的作用是ForEachLoop node的升級版,
你會發現它比ForEachLoop node多了一條輸入。

這條輸入可以隨時停止遍歷,不過我覺得沒麼用,
其一,你不知道是遍歷Array快,還是連接這個輸入的 node快(沒准你想停下的時候人家早就遍歷完了)

其二,除非你遍歷非常多的資料,造成 node卡住了,否則我認為沒什麼必要非得讓他停下來。





38.Make Array node位於BP分類「Utilities」→「Array」內


它的功能是通過輸入的變數組合出一個Array來。

你可以通過點擊右下角的加號來add 一個輸入
(你還可以刪掉多餘的輸入,滑鼠懸浮在輸入變數上面右鍵,可以刪除)

當然,你也可以僅通過一個變數就生成一個Array
生成後Array的順序也與之前左側的輸入順序一致

另外add 一個小知識:如果你正在測試,可以將變數node處點擊右鍵,「Watch This Value」可以輕鬆查看變數的值,方便測試。





39.Set Array Elem node位於BP分類「Utilities」→「Array」內


它的作用有點特別。

首先你向Arrayadd 了一個元素,(按照所輸入的編號位置)
那麼此位置上原有的元素將被刪除,替換成你所給定的元素。

其次,他還有一個功能,你注意到了那個紅色的boolean了嗎?當你將它點為“True”的時候。

如果你填寫的編號在超出了Array的長度,則依然add 這個元素,然後 node會自動幫你補齊中間的編號,(這些補齊的元素為預設值)
(如果你沒有使這個booleanTrue,則不會有自動填充的功能,如果超出了Array的長度則沒有反應)
另外填寫負值也是沒有反應的。

注意這是替換,不是add ,它與add node不一樣。
如果你勾選boolean值變數就會擁有resize node的功能。



40.Filter Array node位於BP分類
Utilities」→「Array」內

 它的功能就是過濾,左側的輸入node,是過濾前的Array


下面的紫色的node輸入你想查找的Actor
(注意,你輸入的就是過濾之後剩下的,而不是將紫色輸入的過濾掉)

你可能疑惑,為什麼紫色的明明是藍圖類,為啥可以被當成Atcor來篩選呢?
你會發現在下拉清單中,不符合Actor類的藍圖全部都不見了。

我也是弄了挺長時間才弄明白這個 node的意思。

你的輸入Array的類型也變成了Actor,作為輸出的Array,它已經被刪去了多餘的元素,只剩下你所選的那個紫色的Actor元素。



41.Enable Input node位於BP分類「Input」內


它的功能是給予Actor使用按鍵的許可權。

有另一個對應的nodeDisable Input」取消Actor使用按鍵的許可權。

通常,能用按鍵觸發的藍圖只有關卡藍圖和控制器藍圖。在其他藍圖你用按鍵是沒有任何反應的。當然,你還是必須事先將其丟進場景裡面。

node的上面輸入需要按鍵功能的Actor藍圖,通常用「self」自己。(哪裡用放哪裡,就無需管它)

下面是控制器
(我覺得是需要獲取控制器使用按鍵的許可權吧
一般也用get player controller來連接。

關於「self」在類的概念裡,所有變數在生成時就已經複製一份進入“self”裡面了。

所以「self」可以代替改類,也就是該藍圖。




42.Deactivate node位於BP分類
Components」→「Activation」內

 這是一個很有意思的 node;它可以將Actor元件停止使用,
這並不意味著它會刪除掉這個元件。



像是暫停鍵一樣,不同的元件連接它所顯示的效果各不相同。

我試過將Mesh(範本裡的那個小人)連接此 node,他顯示的效果是暫停Animation

小人保持一個動作像一個小丑,因為你的Animation藍圖是在Mesh裡面設置的。

其實應該還有很多效果沒有顯示出來。只要是所連接元件的功能全部被停止了,

如果你連接攝像機元件,你會發現攝像機失效了。等等…...
總之,它的功能就是暫停元件,如果你希望遊戲世界的時間停止可以用此node。




43.Cast to node位於BP分類「Utilities」→「Casting」內
你會發現非常非常多的此 node,他們負責將類型轉換到名字上面寫到的藍圖類上。
這邊的藍圖可選太多,TDAT挑只其中一個做為參照。

首先,為什麼要使用這個功能;有些功能是個別藍圖特有的,比如關卡藍圖與控制器藍圖就具有輸入按鍵的權利。

其實你也可以使用Enable Input node來使其他藍圖類也擁有這個功能,不過這不是這個node的重點。

當你需要其他藍圖的「功能」、「變數」或者是其他藍圖自身的引用時。你可以用此 node來實現。

(另外說一句,變數通常只能在本藍圖生效,引用只有在Actor放置到場景中才能被其他藍圖使用。)

當然你得實現將變數設置為全域變數才行(點開小眼睛)

類型轉換只能是轉換到所連接的輸入端的子類才能成功,如果你需要這個藍圖類裡面的變數,你可以通過Get node獲取的它的父類引用。

這個過程叫做藍圖的通訊,稍後我還會介紹另外幾種通訊方法,他們是藍圖的微血管。

右側有一個cast failed,意思是轉換失敗時調用,這也意味著此 node不會一直成功,這取決於
連接的輸入端是不是他的父類,如果你想知道某 node的輸出到底是什麼(比如碰撞檢測,碰到ActorPawn的輸出絕對不是一樣的)。

我一發子彈打到了石頭上,將石頭這個輸出的引用連接到此 node的輸入上(比如你想給怪物減血)那麼就會轉換失敗。

因為石頭類不是怪物類的父類。(這是模糊的一個使用方法)
(明確的使用方法就是直接用Get node獲取到它的父類,這會一直成功,而不用管cast failed輸出了。)

右下的引用輸出在成功轉換後會開始輸出,這就可以為所欲為的使用此 node代表的藍圖類裡面的一切了。




44.VectorLength node位於BP分類
Math」→「Vector」內



大家知道金黃色變數代表向量型資料,你可以把向量理解成在空間裡一條帶箭頭的直線。

最原始的時候這條線的起點就是0,0,0(也就是你點擊一下Actor出現的坐標軸的那個點)
當你創建一個向量類型的變數後,你可以改變這個座標,
於是從原點,到達你輸入的點,二者連線,之間的長度就是此 node的輸出值。

向量型變數還可以將它顯示3D控制項,在場景中生成一個小菱形體以便確定位置,你可以把值調為原點來仔細揣摩一下上述的意思。
(當然前提是你需要點一下小眼睛把這個變數暴露出來)。

這個長度就叫做向量的(膜長),高中的數學知識。它可以用在遊戲裡測量距離,在官方實例Example ContentBlueprints_Advanced關卡裡有一個會變長的籬笆,就是應用了向量的知識。





45.Round node,位於BP分類「Math」→「Vector」內



它的功能是輸入一個浮點型,將其四捨五入變成一個整型。

這個也在上述的實例中以一種非常巧妙的方式呈現。
總之不要忽視它的用途,
其實這個 node非常有用。






46.Set Material位於BP分類
Rendering」→「Material」內



作用:設置某StaticMesh(靜態網格體)的某個材質通道的材質

目標:要設置的StaticMesh(靜態網格體)
Element Index:目標如果是多維材質,指定要設置哪個通道

Material:可以是基本材質,也可以是材質實例
另外Set Material裡面的Element Index是通道ID,一個物體具有多個材質的時候(多維材質),你需要指定要設置哪個ID的材質。









47.FlipFlop node位於BP分類「Untilities」→「Flow Control」內


作用:第一次輸入則輸出A,第二次輸入則輸出B

Is A:如果輸出的是A則返回True,否則返回False

通常用於“開關”。










48.Play Animation(人物) node位於BP分類「Components」→「Animation」內



作用:給骨架網格物體播放Animation
目標:要設置的骨架網格物體(人物模型)

New Anim to Play:設置Animation序列(可以是Animation蒙太奇)(可以是混合空間)。

Looping:是否迴圈播放Animation

人物Animation主要還是Animation藍圖,個別用的少的動作可以用此 node

Animation蒙太奇是Animation加聲音或特效,做技能用。

混合空間用於多個Animation混合,可以讓Animation不會那麼生硬。







49.Get actor transform node位於BP分類
Utilities」→「Transformation」內


作用:獲取Actor3D變換(Transform)一個橙色的變數。

這個橙色的變數是一個「結構體」,它包含了Actor的位置,旋轉,縮放。

結構體就是許多變數結合到一塊,與Array不同的是結構體通常用的不是一種變數,而是多種。

如果你想單獨修改其中一個值請先將其用break node打開,修改後再用make node裝好。



50.Set looping node位於BP分類
Components」→「Timeline」內



node一共有五個一樣的,分別為不同目標使用。
作用:將時間軸引用設置為迴圈。
(你要記住Looping是迴圈的意思)

時間軸一般用於靜態網格物體,如果需要此 node的功能,我覺得是風吹在旗子上,旗子會一直飄動。
(因為旗子不會停下來,所以需要此 node設置一下)。

其實在時間軸 node可以直接設置此項,不過此 node更為靈活。



51.Set play rate node位於BP分類
Components」→「Timeline」內





同樣,他也有很多名字相同的 node
功能:設置時間軸的播放速度。

new rate:播放速度的倍數,值越大,播放的越快。







52.Stop node位於BP分類
Components」→「Timeline」內


作用:使時間軸立即停止(不是返回原點)








53.Play node位於BP分類
Components」→「Timeline」內



作用:讓處於停止狀態的時間軸恢復播放(可以與stop node搭配使用)。



停止和恢復時間軸的搭配使用是一個很有意思的效果。









54.Reverse node位於BP分類
Components」→「Timeline」內



作用:反向播放時間軸。
(從使用那一刻開始立即反向播放,而不是跳到最後再反向播放)


儘管時間軸 node上已經存在了此功能,但不論是效率,還是美觀程度,顯得此類重複的 node也挺有必要的。




55.Reverse from end node 位於BP分類
Components」→「Timeline」內



功能:從被使用的那一刻起,讓時間軸跳到最末尾,然後反向播放它。






56.Play from start node位於BP分類
Components」→「Timeline」內



功能:從頭開始播放時間軸。
不過我認為這個功能並不是很常用。





57.Set new time node位於BP分類
Components」→「Timeline」內







作用:設置時間軸從第幾秒開始播放,必須在時間軸未播放狀態下使用,否則會出錯的。







58.LineTraceByChannel node位於BP分類「Collision」內


作用:發射一條射線用於檢測碰撞。

Start:這條射線的起始位置。
End:這條射線的結束位置。(兩點確定一條直線)

Trace Channel:用於檢測的東西是什麼類型。
下拉清單內選項分別為:

visibility」可見的,
camera」相機。

Trace Complex:是否檢測複雜的碰撞
Actors to Ignore:這個一個Array,用於忽略檢測其中的Actor
Draw Debug Type:這條射線的狀態
下拉清單內選項分別為:

none」不顯示射線,
for one frame」只顯示一瞬間射線,
for duration」根據最下方的浮點值確定顯示射線的時間,
persistent」一直顯示這條射線。

Ignore Self:檢測的時候忽略檢測自身。
Trace Color:未檢測之前那段的顏色
Trace Hit Color:檢測到之後的那段顏色
Draw Time:僅僅Draw Debug Type為「for duration」值時可用。
Out Hit:檢測的輸出,如果沒有則為空,這個結構體包含相當多的東西。
Return Value:如果檢測到符合要求的就輸出True,沒有檢測到就輸出False



59.LineTraceForObject node位於BP分類「Collision」內


它與LineTraceByChannel node的功能一樣,都是射線檢測。

不同的是Trace Channel的枚舉變成了Object Types的枚舉Array

我覺得兩者之間的差別在於,所檢測的物件不同。
你可以看到此 node上的物件已經變成了Array,意思是同時可以檢測多種,而前者只能同時檢測一種,且二者檢測的種類也發生了變化,因為我也不是很明白,所以不能對枚舉的每個詞彙代表的意思做出正確的解釋。

枚舉變數,其實就是簡簡單單的一組「名字」。與鑰匙一樣,而大門卻在函數裡面。我所知道的是,你會發現很多的不同的互不相容的枚舉,因為他們都是互不相同的鑰匙。

這就可以解釋為啥創建一個枚舉,只需依次寫入名稱就行了,不用管其他的東西,因為其他的東西全是在函數裡面定義的。



60.Set playback position node位於BP分類
Components」→「Timeline」內



作用:把時間軸跳的第幾秒播放。類似於set new time node


不過兩個boolean值實在不知道幹啥用的。












61.Set timeline length node位於BP分類
Components」→「Timeline」內



作用:設置時間軸的長度,(只能在執行時間軸之前使用,另外設置的長度還必須比原本的低)。



總之不會常用。







62.Set timeline length mode node位於BP分類「Components」→「Timeline」內


作用:設置時間軸定義長度的方法。

枚舉:TL Timeline Length---以時間長度為True實的播放長度。

         TL Last Key Frame----0到最後一個關鍵幀為True實播放長度。

通常,大家習慣用多少就將兩個關鍵幀設置多少,不過如果你想前後空出幾秒空白的長度就需要轉換成下面的模式了。



63.Is playing node位於BP分類
Components」→「Timeline」內


作用:判斷所選時間軸是不是在播放狀態,如果是,返回True。









64.Is reversing node位於BP分類
Components」→「Timeline」內



作用:判斷所選時間軸是不是在反向播放,如果是,返回True







65.Is looping node位於BP分類
Components」→「Timeline」內





作用:判斷所選時間軸是不是在迴圈播放,如果是,返回True






66.Get timeline length node位於BP分類
Components」→「Timeline」內



作用:輸出時間軸的長度,返回幾秒。









67.Get playback position node位於BP分類「Components」→「Timeline」內


作用:獲取時間軸當前播放到第幾秒,取到小數點後六位。





68.MultiGate node位於BP分類
Utilities」→「Flow Control」內


作用:按一定順序調用右側的代碼。

Reset重置,當所有代碼被執行後如果沒有設置迴圈執行,則需要此輸入設置重置。否則只執行一輪。

Is Random,是否設置順序為隨機。
Loop,是否迴圈調用。
Start Index,首次執行哪一條。









69.Set Static Mesh node位於BP分類
Utilities」→「Flow Control」內


作用:説明有Mesh模型元件的藍圖替換模型。

Target:需要替換的Mesh元件,一般直接引用         藍圖即可,類型會自動轉換成Mesh元件。
New Mesh:想替換成什麼模型。
Return Value:如果成功則輸出True,一般都會
成功。(我沒有遇到過輸出False的時候)

※成功替換後可能會失去材質※





70.Random Integer in Range node位於BP分類
Math」→「Random」內



作用:在最小值與最大值之間取隨機值,並輸出。

4 則留言: