數學表達式節點
概述
要想創建一個數學表達式節點,請右擊圖表並從關聯菜單中選擇 Add Math Expression(添加數學表達式)... 。
數學表達式節點就像一個合並的圖表。它是一個獨立的節點,您可以雙擊它來打開構成其功能的子圖表。 最初,該名稱/表達式是空的。任何時候,當您重命名該節點時,都將會解析新表達式並生成新的子圖表。
變量
變量命名非常靈活,但是記住以下幾點非常重要:
- 變量名稱本身可以包含數字,但是不能以數字開頭。
- 變量名稱不能和隱藏的藍圖變量名稱一樣。
- 確保您正在使用正確的變量類型。比如, boolVar+1.5 就不是一個有效的表達式。
運算順序
運算順序如下所示(按照優先級從高到底的順序):
- 括號內的表達式
- 階乘
- 指數
- 乘除法
- 加減法
可用的藍圖函數
注:可能根據UE版本的不同,支持的函數可能不一樣。
- 三角函數 (sin/cos/tan、asin、acos, 等)
- 區間限定函數 (min, max, clamp,等)
- 四舍五入函數 (floor, fceil, round等)
- 指數函數(square, power, sqrt, loge, e/exp等)
其它
因為支持的結構體類型、操作符可能會改變,請以官方文檔為准。
注釋
注釋 可被直接添加到單個 藍圖 節點上,也可以注釋框的形式添加到組相關節點上並提供其功能的描述信息。 它們可以單獨以其管理用途來讓 圖表 更易讀懂,但它們也可以用來提供信息,正如添加注釋到節點一樣,使用注釋或注釋框可以把文本描述內容添加到節點上。
創建節點注釋
如需直接在 藍圖 圖表中添加注釋:
- 在節點上右鍵點擊。
- 在出現的菜單中,在 Node Comment (節點注釋)文本框位置處輸入注釋,然后按下 回車 。
創建注釋框
創建注釋框很容易:
- 選擇一個您想要進行注釋的節點組。 您也可以先創建一個空白的注釋框,並在稍后對節點附近的注釋框進行排列,或者將其作為懸浮注釋放置於指定區域。
- 右鍵點擊並選擇 Create Comment from Selection (從選擇項中創建注釋) (如果未選中任何節點則選擇 Add Comment... (添加注釋...) )。 此時將出現新的注釋框。
類型轉換(Casting)
跟C++中一樣,可以給一個類型進行類型轉換,類似於C++中dynamic_cast的功能。
事件
Events(事件) 是從游戲性代碼中調用的節點,用於啟動執行 事件圖表 中的一個獨立的節點網絡 。這允許 藍圖 執行一系列的動作來對游戲中發生的 某些事件做出響應,比如游戲啟動、關卡重置、受到傷害 等。您可以在 藍圖 中訪問這些事件,以便實現新功能、覆蓋或擴展默認功能 。在一個 事件圖表 中,可以使用多個 事件 ;但是每種類型的事件僅能使用一個。
注意:
每個事件僅能執行一個單獨的對象。如果你想從一個事件觸發多個動作, 您需要線性地把它們連接到一起。
示例
LevelReset(關卡重置)
當關卡重新啟動時,LevelReset(關卡重置)會發出一個執行信號。當您在重新加載關卡后需要立即觸發一些動作時,這是有用的, 比如,玩家已死但不需要重新加載關卡 的游戲情形。
自定義事件
Custom Events(自定義事件) 為您提供了一種創建您自己的事件的方法,您可以在您的 藍圖 序列 的任何地方處調用這些事件。當您正在把多個輸出執行線連接到一個特定節點的輸入執行引腳時, 使用 自定義事件 可以簡化您圖表的節點連線網絡。您甚至可以在一個 藍圖 的圖表中創建 自定義事件 ,而在另一個圖表中調用該事件。
創建自定義事件的簡單流程:
- 創建並命名 Custom Event(自定義事件) 。
- 設置這個事件應該具有的任何輸入參數及其默認值。
- 創建一個調用該自定義事件的特殊函數。
- 輸入任何需要的輸入參數。
創建自定義事件
- 通過右擊並從關聯菜單中選擇 Add Custom Event(添加自定義事件)... 來創建一個 Custom Event(自定義事件) 節點。
- 給這個新事件賦予一個名稱
- 在您的新事件的 Details(詳細信息) 面板中,您可以設置當在服務器上調用該事件並添加輸入參數時,是否將該事件復制到所有客戶端上。
可以通過New來添加參數,要想改變節點邊緣上的這個參數的引腳的位置,請使用展開的 詳細信息 面板項的向下和向上箭頭。
現在,和其他 事件 或執行節點一樣,您可以把其他節點附加到您的 自定義事件 的輸出執行引腳上,這樣當觸發了您的 自定義事件 時將會開始執行那個節點網絡。 這個 自定義事件 向屏幕輸出了一個字符串。
調用自定義事件
您已經創了 自定義事件 及其相關的節點網絡,但是和常規的 Events(事件) 不同,沒有觸發 自定義事件 的預制條件。要想調用您的 自定義事件 ,請右擊並從關聯菜單中選擇 Call Function(調用函數) > [自定義事件名稱] 。
自定義事件 上設置的任何輸入參數在新的節點中都將呈現為輸入數據引腳,以便它們可以傳入到 自定義事件 中。您可以根據需要使用數據連線把任何數據引腳連接到變量或其他數據引腳上。
和常規的 Events(事件) 不同,常規事件在每個圖表中每種 事件 類型僅能調用一次;但是您可以在圖表中多次調用一個 自定義事件 。這樣, 自定義事件 就可以把多個執行輸出分支連入到 一個單獨的執行輸入上,而不需要直接連線。
在這個示例中,如果 IsSuccess 布爾變量為 false ,那么將打印一個錯誤信息。這個圖表的功能,和在序列中的 Branch 節點后面連接 Print String 節點的功能一樣, 但是它有個附加功能是圖表中的其他部分可以使用 Print String 節點,且圖表中兩個網絡部分的彼此位置不必太近。
事件圖表
藍圖中的 EventGraph(事件圖表) 包含一個節點圖表,該圖表使用事件和函數調用來執行動作, 以便對和該藍圖相關的游戲事件做出反應。 事件圖表通常用於給藍圖的所有實例添加功能。 這里也是設置交互性和動態反應的地方。 比如,一個光照藍圖可以通過關閉其 LightComponent 及改變其網格物體使用的材質來對於傷害事件做出反應。 這將會自動地為該光照藍圖的所有實例提供這種行為。
關卡藍圖 中的 EventGraph(事件圖表) 包含一個節點圖表,該圖表使用事件和函數調用來之行動作,以便對 游戲事件做出反應。這個事件圖表用於從總體上處理關卡中的事件,及給世界中特定的 Actor 和 藍圖 實例 添加功能。
無論哪種情況,應用 EventGraph(事件圖表) 都要通過添加一個或多個事件來作為入口點,然后連接 Function Calls(函數調用) 、 Flow Control(流程控制) 節點及 變量 來執行期望的動作。
組件
Components(組件) 面板允許組件一創建就添加到 藍圖 上。這提供了一種方法,使得可以通過 CapsuleComponents 、 BoxComponents 或 SphereComponents 來添加 碰撞幾何體, 可以通過 StaticMeshComponents 或 SkeletalMeshComponents 的形式添加渲染幾何體, 通過使用 MovementComponents 控制運動等。您還可以將添加到 Components(組件) 列表中的組件, 分配給這個藍圖或其他 藍圖 中用於訪問這些組件的實例變量。
添加組件
要想在 組件 列表中向 藍圖 添加一個組件:
- 從該下拉列表中選擇您想添加的組件類型,比如一個 **CameraComponent(相機組件)** 。
要想通過拖拽並放置方式來添加一個組件:
組件也可以這樣進行添加,即通過從內容瀏覽器中拖拽 StaticMesh 、 SoundCue 、 SkeletalMesh 和 ParticleSystem 資源並將其放置到 組件列表中。
刪除組件
要想從 Components(組件) 列表中刪除一個組件,僅需簡單地右擊該組件的名稱並選擇 Delete(刪除) 即可。
組件資源
要想把一個資源分配給 組件列表 中的一個組件:
- 在內容瀏覽器中,選擇要分配的資源。該資源類型必須和組件類型 相兼容。
- 在 組件 面板中,選擇您想將該資源賦予的組件。該組件的詳細信息將會出現在 詳細信息 面板中。按下 詳細信息 面板的 [Asset(資源)] 部分中的
按鈕。這樣該資源就分配給了該組件。
組件事件和函數
根據組件類型的不同,您可以基於它們在事件圖表中添加事件 和/或 函數。比如,另一個actor(比如一個Pawn)穿過 Box Component時,該Box Component可以有一個Overlap事件。以這種方式創建的任何事件或函數都是針對那個特定函數的,不必測試來確認它所涉及的組件。
創組件事件非常簡單,如下所示:
- 創建一個可以為其創建事件的組件。在這個示例中,我們使用一個BoxComponent(盒體組件)。
- 為您的組件提供一個名稱 - 這會為其創建一個變量。
- 在 Variables(變量) 選卡中,選擇該新變量。
- 在 圖表 選卡中,右擊彈出關聯菜單。如果該組件有任何相關聯的事件或函數,都會在頂部列出這些事件或函數。
在這個示例中,我們添加了一個 Overlap事件,每當有actor穿過這個Box Component體積時都會調用該事件。
注意:不是所有的組件都有相關聯的事件。比如,一個Point Light Component(點光源組件)僅具有函數。
構造腳本
當創建 類藍圖 時, Construction Script(構造腳本) 在 Components(組件) 列表 之后運行。構造腳本包含一個節點圖表,執行該圖表使得該 類藍圖 實例執行初始化操作。 這個功能非常強大,因為像在世界中執行追蹤、設置網格物體及材質等這樣的動作可以用於 實現情境關聯的設置。比如,一個光源的 藍圖 可以決定它所放置到的地面的類型, 且可以從一組網格物體中選擇要使用的正確的網格物體;或者一個籬笆 藍圖 ,它可以在各個方向上 進行追蹤,來決定籬笆需要有多長才能跨越那個距離。
注意:僅類藍圖包含 Construction Scripts(構造腳本) 。關卡藍圖沒有構造腳本。
Construction Script(構造腳本) 圖表的執行入口點是一直存在的 ConstructionScript 節點。
藍圖調試
藍圖調試是一種非常強大的功能,允許您在Play In Editor(在編輯器中運行)或Simulate In Editor(在編輯器中模擬)模式下使用斷點來中止游戲執行過程,並單步調試任何藍圖圖表或關卡藍圖。
調試控件允許您在Play In Editor和Simulate In Editor模式下控制游戲的執行過程。當游戲運行時,會在藍圖編輯器中啟用這些控件。根據所調試的 藍圖 及當前調試狀態的不同, 會在工具條 上出現不同的調試按鈕。一些控件僅當遇到相關 斷點 時才會激活。
當激活 Simulate in Editor 或 Play in Editor模式時, Debug(調試) 選卡和 Blueprint Debugger(藍圖調試器) 都將會顯示情境關聯的調試按鈕。其中 Debug(調試) 選卡可以從 藍圖編輯器 中的 Graph(圖表) 模式下打開。
斷點
當從編輯器中運行游戲時,Breakpoints(斷點) 可以在任何點處中止游戲的執行過程。屬於一個藍圖或關卡藍圖的所有圖表的所有斷點都會顯示在 Debug(調試) 選卡中。該列表中的斷點名稱都有超鏈接,您可以點擊它們,並直接跳轉到 Graph(圖表) 選卡中和那個斷點相關的節點處。
您可以在要執行的圖表中任何節點上設置斷點,比如 Function Calls(函數調用) 和 Flow Control(流程控制) 操作,只需通過右擊節點並選擇 Add breakpoint(添加斷點) 即可設置斷點。當已經在一個節點上設置了斷點時,會在該節點的左上角上顯示一個圖形。
通過右擊斷點並選擇 Disable breakpoint(禁用斷點) 或者點擊 Debug(調試) 菜單中斷點旁邊的圖標將其關閉,可以禁用斷點。這個處理也可以通過右擊 Debug(調試) 選卡中的斷點並選擇 Disable breakpoint(禁用斷點) 來完成。
這樣做時斷點會留在原處,但是當執行該節點時它不會使游戲停止。已禁用的斷點僅顯示為一個斷點輪廓。
調試選卡和藍圖調試器
Debug(調試) 選卡顯示了設計師指定的重要信息,信息以斷點、查看值及屬於已經執行過的藍圖的所有節點的堆棧追蹤的形式顯示。當使用斷點時,這個窗口也顯示了用於控制游戲執行的控件。
變量值查看器
Watch values(查看值) 允許您在執行過程中快速並輕松地查看變量的值。當調試遇到一個斷點后,所有的選中Actor及關卡藍圖的查看值都會顯示在調試窗口中,並且隨着您單步調試整個圖表,這些查看值會隨之更新。
執行追蹤
Execution Trace(執行追蹤) 棧顯示了所執行的節點的列表,最近執行的節點顯示在頂部。
相當於vs中的調用棧,這個列表隨着您單步調試整個圖表而進行更新。
事件調度器
通過向 Event Dispatcher(事件調度器) 綁定一個或多個事件,您可以在調用該事件調度器后觸發所有事件。這些事件可以在類藍圖中進行綁定,但 事件調度器也允許在關卡藍圖激活這些事件。
創建事件調度器
要想創建一個新的事件調度器:
- 點擊 我的藍圖 選卡頂部的 New Event Dispatcher按鈕。
- 在 我的藍圖 選卡中的列表尾部出現的名稱文本域中,輸入該事件調度器的名稱。
設置屬性
通過在 我的藍圖 選卡內選中該事件調度器,您可以在 詳細信息 面板中編輯其屬性。您可以為您的事件調度器設置工具提示信息和類目,且可以添加輸入。
給您的事件調度器添加輸入,允許您向綁定到您的事件調度器的每個事件發送變量。這使得數據不僅可以在您的類藍圖中流動,且可以在您的類藍圖和關卡藍圖 之間流動。
給您的事件調度器添加輸入的過程和給函數、自定義事件及宏添加輸入及輸出的流程類似。如果您想使用和另一個事件相同的輸入,那么您可以使用 Copy Signature from(復制簽名) 下拉菜單來指定該事件。 要想給該事件調度器添加您自己的輸入:
- 點擊 詳細信息 面板的 Inputs(輸入) 部分的 New(新建) 按鈕。
- 命名該新輸入並使用下拉菜單設置其類型
使用事件調度器
一旦您創建了事件調度器后,您可以添加事件節點、綁定節點及解除綁定連接到其上面的節點。盡管您可以在 我的藍圖 選卡中雙擊事件調度器選項來打開 事件調度器的圖表,但是該圖表是鎖定的,您不能直接修改該事件調度器。綁定、解除綁定及分配方法都允許您向事件調度器的事件列表添加事件, 但調用方法將激活事件圖表中存儲的所有事件。
創建調度器事件
通過使用Event Dispatcher(事件調度器)菜單上的 Event(事件) 選項創建一個具有正確簽名的自定義事件, 使得該事件可以綁定到該事件調度器上。 盡管這個事件節點的看上去和沒有連接到 Bind 節點的自定義事件節點類似, 但是當執行 Call [事件調度器名稱] 節點時將永遠不會觸發該事件。
在類藍圖中進行創建
- 在 My Blueprint(我的藍圖) 選卡下,從 Event Dispatcher(事件調度器)名稱處開始拖拽鼠標並將其放置到您正處理的圖表中。
- 在出現的菜單中選擇 Event(事件) 。
在關卡藍圖中進行創建
在關卡藍圖中,可以創建一種特殊類型的Event Dispatcher(事件調度器)事件,此時事件會自動綁定到事件調度器上。 創建這些事件的步驟和創建默認事件(比如 OnClicked 或 OnOverlap 事件) 一樣。 關卡藍圖文檔中提供了關於這個過程的 詳細介紹。
綁定及解除綁定事件
如果沒有事件綁定到事件調度器,那么調用該事件調度器將不會產生任何效果。鑒於每個事件調度器都有一個和其相關的事件列表。向該列表中添加一個事件的方法是使用 Bind Event(綁定事件) 節點,從該列表中刪除事件的方式是使用 Unbind Event(解除綁定事件) 節點。另外,通過使用 Unbind All Events(接觸綁定所有事件) ,還可以解除當前綁定到事件調度器上的所有事件
盡管 綁定事件 節點可以執行多次,但每個事件僅能綁定一次。同時, 類藍圖 和 關卡藍圖 中的事件都添加到同一個事件列表中,所以 Unbind All Events(解除綁定所有事件) 節點將會取消綁定 類藍圖 和 關卡藍圖 中的所有事件。
- 在 類藍圖 中執行 Unbind All Events(取消綁定所有事件) 節點,將針對該類的所有實例,取消綁定 類藍圖 和 關卡藍圖 中的事件。
- 在 關卡藍圖 中執行 Unbind All Events(取消綁定所有事件) 節點,將僅針對 Target 端提供的內容,取消綁定 類藍圖 和 關卡藍圖 中的事件。
在類藍圖中進行創建
兩種方法:
- 在出現的菜單中選擇 Bind(綁定) 。
- 在圖表中 右擊,在出現的關聯菜單中展開 Event Dispatcher(事件調度器)
在關卡藍圖中進行創建
- 添加到關卡中您想為其調用事件調度器的Actor的引用。
- 從該引用節點的輸出引腳開始拖拽鼠標,然后釋放鼠標來顯示關聯菜單
調用事件調度器
使用 Call 節點調用一個Event Dispatcher(事件調度器),將會觸發綁定到該事件調度器的所有事件。對於每個事件調度器,您可以應用多個 Call 節點,且您既可以在 類藍圖 中調用事件調度器也可以在 關卡藍圖 中進行調用。
在藍圖調用
兩種方法:
- 在 My Blueprint(我的藍圖) 選卡下,從 Event Dispatcher(事件調度器)名稱處開始拖拽鼠標並將其放置到您正處理的圖表中在出現的菜單中選擇 Call(調用)
- 右擊圖表,在出現的關聯菜單中展開 Event Dispatcher(事件調度器)
在關卡藍圖中進行調用
- 添加到關卡中您想為其調用事件調度器的Actor的引用。
- 從該引用節點的輸出引腳開始拖拽鼠標,然后釋放鼠標來顯示關聯菜單。
藍圖交互的用法
直接交互
引用了一個藍圖的實例,這樣就可以直接通過這個實例來調用函數等。
使用場合:
- 當你關卡中有一個Actor,而想跟另外一個Actor通信的時候。
事件調度器
使用場合:
- 角色的藍圖想要跟關卡藍圖通信時。
- 當一個生成的Actor做了某些事情時,你想要觸發事件時。
藍圖接口
使用場合:
- 在藍圖中有一個功能會產生不同的行為時。
類型轉換
使用場合:
- 你有一個角色需要跟關卡中的Actor進行交互,這時需要改變角色的類型時。
- 你想緞帶HUD或者UI控件傳遞變量時。
- 你有多個藍圖,這些藍圖有繼承關系,你想要把它轉換成某個子藍圖。
- 你有一個藍圖,這個藍圖依賴於另外一個藍圖的變量、事件、函數。
- 你想獲取多個藍圖的同一個基類,並且要同時修改它們。