Unreal蓝图入门 节点
最近開始摸索Unreal的藍圖基礎使用,一些基本的操作大家可以在官方網站中的教程中找到,所以我們直接跳到事件圖表上來講。
首先,Unreal有豐富的注釋功能,按住鍵盤C可以創建出注釋區域,在右側的“細節”面板我們可以輕松調整顏色以及氣泡的出現。
節點
見過一些別人編輯好的藍圖的同學們都知道,藍圖中有錯綜復雜的連線,這些連線從一個地方出來,到另一個地方去,控制了流程和數據的輸入輸出。就像是交通線,每個城市就相當于“節點”
節點類型
事件(Events)、自定義事件、函數調用、事件調度器、流程控制、數組節點、時間軸、數學表達式節點、隨機流、注釋。這些都屬于節點類型,豐富的節點類型可以幫助我們在小型的游戲開發中基本不需要編寫自己的C++代碼,實現一些功能,但是同時者考驗來藍圖編寫者的邏輯思維能力。
事件
在藍圖中可以定義各種事件,創建藍圖時默認就會為我們提供三種事件:BeginPlay Tick以及Overlap。對應著我們游戲開始,幀調用以及碰撞觸發事件。 在一個藍圖中,事件的種類可以有多個,但是同種類型的事件只能有一個。
另外,我們也可以自定義事件,Add Event一個事件,然后我們在細節面板可以修改自定義事件的名字,定義各種事件的成員變量。
函數調用
函數的調用是藍圖中同樣重要的一環,函數調用可以簡單分為一般函數調用,其他函數調用和純函數調用。
所謂一般函數調用,是可以在藍圖中形成的操作,同屬于目標Actor或對象的函數相對應 。
其他函數調用,是屬于除了該藍圖之外的其他對象或者Actor的函數。
純函數調用,是可以執行的特殊動作,它不會影響世界或者世界中的對象。比如輸出一個屬性值,進行數學運算等。
流程控制
switch:提供了各種switch判斷的類型,也可以自定義枚舉類型在這里判斷。
branch:相當于if else語句
Do N:接受條件執行,但是有次數限制,達到次數上限后,再次接受相同條件無法執行后續節點操作。但是可以通過重置使次數歸0 .
DoOnce:同上,但是只能執行一次
DoOnceMultiInput:可以根據不同情況執行不同的操作,但是如果想要再次執行,需要Reset。
FlipFlop:交替執行A和B后面的內容。
ForLoop:for循環
ForLoopWithBreak:可以在一定條件下終止循環,執行相應的語句。
Gate:門,顧名思義。可以設置Enter的條件和Exit的執行語句,可以設置open的條件,close的條件,或者用toggle使其自動open和close·······
MultiGate:可以又多種輸出的開關門,可以設置開始和重置,可以選擇是否隨機或者循環,可以從只當index的輸出開始
Sequence:按順序一次執行,但是值得注意的是,即使寫了Delay,Sequence也會直接執行后面的語句
變量
存放一個值或者引用世界中一個Object或Actor的屬性。
變量類型:
詳細介紹:
布爾值(bool):小案例:利用不布爾值設置一個point light的intensity,按下鍵盤一個鍵后,如果燈是打開則關閉,如果關閉則打開。
易犯錯誤:將一個布爾值取反后,忘記重新把這個取反后的值設置回這個變量中,導致只能發生一次變化。
字節(byte):學過一定計算機理論的知道,1字節是8位,在UE中存儲范圍是0-255。在右側細節欄中可以設置UI中滑動的范圍以及值的取值范圍,后者控制前者。
整型和64位整型:整型是32位,兩者僅僅范圍不同
浮點型(float):范圍很大,案例:做一個四舍五入的功能(利用浮點型轉整型操作)。
Name,String以及Text:Name是輕量級的字符串,經常被用于對象的命名 string是我們通常用的字符串,支持字符串的拼接,查找等其他語言中都存在的操作 Text是大段文本,如果游戲中出現大段對話,基本我們就使用Text,這樣會對我們的本地化非常有幫助。
Vector:引擎中很多屬性例如位置,旋轉,縮放都是使用Vector。案例:使用Vector修改物體的位置和縮放。
Rotator:和Vector類似,可以用來定義一個旋轉角度。
Transform:Transform即物體的位置,旋轉和縮放,第一個和第三個是Vector類型,第二個是Rotator類型。案例:獲取物體的Transform中的旋轉進行輸出。
Enum枚舉類型:我們可以在內容瀏覽器中新建一個自己的枚舉類型,為其設置各種情況以及解釋
Structure結構體:我們可以在內容瀏覽器中新建一個結構體,類似于各種編程語言中的struct
綜合案例:創建一個學生結構體,屬性為姓名,年齡,以及學校(利用枚舉類型),在藍圖中實現這樣的功能:根據學生年齡的大小,輸出“姓名”+是否成年+“(學校類型)”。
數組節點:
由于本篇文章是基于有一定其他編程語言經驗的人編寫,所以數組方面可能不會那么詳盡的去介紹。
在這個地方可以修改變量的類型,有普通變量,數組,集以及字典。
數組中的方法:
很多方法都是其他語言中存在的一些常用的方法,大多都屬于增刪改查,具體如何使用各位客官可以自己摸索。
集合:
接下來就是我們的第三種數據存儲容器,集合
在C#中,我們有數組,列表,字典,哈希表,棧和隊列等數據結構,集合也是一種類數據結構容器,在初等數學中我們應該學過集合相關的知識。
如果硬要對比的話,集合就好比一個鍵值對相同的字典。
在藍圖中,可以對集合進行如上圖的操作。其中也包含了最常用的差并交三個基本操作。
地圖:
第四種數據存儲容器:map
這個就很熟悉了,有的編程語言中它叫map,有的中是Dictionary,本質上就是一個鍵值對,而且是一種引用類型的鍵值對;與之相對的是,哈希表是一種值類型的鍵值對。
上面是map中一些常用的方法,有一定數據結構知識的客官們應該能輕松應用這些方法。
函數(Function)
在上圖中,我們已經大概了解了圖標和變量的含義,那么接下來是函數。
可以覆蓋,但由于我們還沒有繼承的子類或者父類,我們就先新建一個函數
點擊新建的函數,可以進入我們的函數界面,在右側的細節面板有我們的一些函數相關的設置,例如一些注釋,訪問方式(public protected private) 是否為純函數 在輸入和輸出中,我們可以定義相應的函數的輸入和輸出數據流。
實操訓練:對一個數組進行排序
unreal藍圖中實現數組的排序是非常消耗性能且復雜的。
宏:
宏跟函數非常類似,可以定義輸出和輸出,而它比函數多了一個功能,它可以在右側的細節面板設置多個輸入和輸出引腳,有點類似于我們的分支,具體如何使用到之后繼續總結。
數學節點–藍圖中的math類
如圖所示,在藍圖中搜索math,會出現很多一些藍圖中的數學節點,這些節點提供了我們對一些數據類型的基本的操作。
數學節點也包括對transformation的操作,另外,我們的Random節點也歸在數學節點里,不再做進一步的介紹,請各位客官嘗試使用一下各種數學函數,靈活運用到自己的項目中。
時間軸:
Timeline為我們提供了一個基于時間的控制器,不僅僅是做動畫,Timeline代表了一種在時間軸上進行各種操作的編程習慣。
對Timeline的介紹分為兩部分,首先是Timeline的曲線編輯器:
最上面一排,可以添加基于各種類型變量的曲線,設置曲線的時間,自動播放,循環等屬性。在一個Timeline中可以定義多條曲線,都會在事件圖表中顯示出來。中間是我們的曲線編輯窗口,我們可以按shift去添加關鍵幀,用delete去刪除關鍵幀。右鍵點擊關鍵幀,可以設置關鍵幀在此處的狀態是平滑,線性還是劇變等等狀態。
然后是事件圖表中的Timeline節點:
Play:播放
Play from Start:從頭開始播放
Stop:停止
Reverse:從后往前播放
Reverse from End:從最后往前播放
Set New Time:為動畫設置一個新的時間
Update:每幀執行
Finished:結束執行
Direction:播放是從后往前還是從前往后
Timeline在創建后,在左側會以組件的形式出現,我們可以像對其他變量和組件一樣對它進行get 和set
下面是關于Timeline節點的一些方法:
總結
以上是生活随笔為你收集整理的Unreal蓝图入门 节点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 强大的跨平台绘制流程图软件网站Proce
- 下一篇: 八旗旗主,八大贝勒(亦称人王)