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