最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

藍(lán)圖節(jié)點(diǎn)基礎(chǔ)知識(shí)Nodes - 虛幻引擎

2023-07-12 04:01 作者:翻滾的肉喵  | 我要投稿

The Basics Of Nodes In Unreal Engine 4/5

原作者:Matt Aspland??本文為英文視頻教程整合的中文筆記,旨在快速了解藍(lán)圖常用的節(jié)點(diǎn),為使用引擎打下堅(jiān)實(shí)的基礎(chǔ)

1. Flip Flop 觸發(fā)器

打開關(guān)閉某種功能

切換狀態(tài)。

通常用途:

角色切換沖刺或普通運(yùn)動(dòng)狀態(tài)。

蹲下或站立狀態(tài)

2. Lerp 插值

Lerp的全稱是Linear Interpolation? 線性插值

本質(zhì)上根據(jù)alpha值設(shè)置或者更改值

應(yīng)用范例:使用一個(gè)timeline來執(zhí)行開門。

時(shí)間線的軌道將使用lerp的alpha值,并且得到一個(gè)打開和關(guān)閉的位置和角度。

然而當(dāng)你想要打開它進(jìn)入a和b之間的的角度,這意味著隨著timeline的進(jìn)度,它將使用alpha值來找到a和b之間的開關(guān)位置。軌跡是從0到1,當(dāng)alpha值是0.5的時(shí)候,門將是半開或半關(guān)。

?


3. Do Once

這個(gè)節(jié)點(diǎn)之后的所有代碼只執(zhí)行一次。

就算在Event Tick里它也只會(huì)執(zhí)行一次所有的操作,直到你重置它。

比如鬼屋里只能打開一次的門,進(jìn)屋后,門就一直關(guān)閉不能反復(fù)開關(guān)了。


這是一個(gè)可以反復(fù)開關(guān)的門


在出口添加Do Once節(jié)點(diǎn),然后再播放動(dòng)畫,這樣門只能打開一次。

可以使用Reset入口來控制它的重置。但是Reset不會(huì)重置動(dòng)畫。

4. Switch On Int 切換整型

根據(jù)某個(gè)數(shù)值觸發(fā)一行代碼

類似于其他語言的Switch...case語句


5. Sequence 序列

從一個(gè)事件觸發(fā)多行代碼

例如:從一個(gè)Event Tick來觸發(fā)耐力系統(tǒng),通過序列來獲得多個(gè)執(zhí)行的代碼行(háng)。


它可以按序列同時(shí)執(zhí)行,不用等第一個(gè)序列執(zhí)行完再走到第二個(gè)序列。每個(gè)序列都是獨(dú)立的代碼行相互不干擾。


6.Cast to 類型轉(zhuǎn)換

主要應(yīng)用于不同藍(lán)圖之間的調(diào)用,選擇正確的對(duì)象并轉(zhuǎn)換為相應(yīng)的類,從而調(diào)用該對(duì)象中的屬性。

角色藍(lán)圖 (Pawn也是類似的用法)

是從一個(gè)藍(lán)圖投射到另一個(gè)藍(lán)圖的實(shí)際應(yīng)用方法。

關(guān)卡藍(lán)圖調(diào)用角色藍(lán)圖


7.Branch 分支

程序里的If....Else...

檢查布爾變量的值,如果為真則觸發(fā)真分支的代碼如果為假則觸發(fā)假分支的代碼。


8.For循環(huán)

在循環(huán)體中觸發(fā)從第一個(gè)到最后一個(gè)索引之間的代碼,然后觸發(fā)代碼的執(zhí)行內(nèi)容并無限期的重復(fù)這個(gè)操作,除非被告知僅執(zhí)行一次,或一定的次數(shù)。如果想要停止的話可以用帶Break的For循環(huán)

循環(huán)體是你希望在循環(huán)內(nèi)執(zhí)行的代碼行,第一個(gè)和最后一個(gè)索引是你希望循環(huán)執(zhí)行的次數(shù)。

Completed是你希望在循環(huán)結(jié)束后執(zhí)行的代碼行


9. Begin & End Overlap 開始/結(jié)束重疊

開始重疊和結(jié)束重疊 將沿著執(zhí)行行觸發(fā)一個(gè)脈沖,這對(duì)于打開特定區(qū)域的門很有用。

在一個(gè)門的前面但不是特別遠(yuǎn)的時(shí)候可以使用重疊事件。

TriggerBox的Overlapped Actor是你需要忽略的行動(dòng)對(duì)象,比如你不希望AI角色進(jìn)行操作,只希望自己操作的角色來觸發(fā)重疊。就可以把AI角色放在這里。Other Actor是你可以用來進(jìn)行重疊操作的行動(dòng)對(duì)象。


10. Gate 門

?門可以讓你開關(guān)來控制執(zhí)行流程。

?想象一個(gè)真實(shí)世界開關(guān)門的流程,開->進(jìn)入->走出->關(guān)

?在開->關(guān)后是無法進(jìn)入的

?![[Pasted image 20230708025928.png]]

?進(jìn)入門的碰撞領(lǐng)域 觸發(fā)Open 然后按E 觸發(fā)進(jìn)入Enter,離開碰撞領(lǐng)域 觸發(fā)Close。Exit可以觸發(fā)開門的所有后續(xù)操作代碼(Enter后)。

?而Toggle錨點(diǎn)屬于用同一個(gè)事件來控制開關(guān)。


11.Do N 執(zhí)行N次

類似于Do Once ,但是可以指定執(zhí)行次數(shù)。

圖中展示一個(gè)最大行走速度逐漸增加的過程,在停止移動(dòng)后重置。在開始行動(dòng)后遞增速度每次15,遞增50次(除非中斷行走)


12. Custom Event 自定義事件

在藍(lán)圖中可以自己創(chuàng)建的事件,觸發(fā)或者調(diào)用代碼比如一個(gè)宏或者一個(gè)函數(shù)。

一般代碼的起始就是從一個(gè)事件觸發(fā),你需要從其他的東西觸發(fā)它然后觸發(fā)事件,從而運(yùn)行后續(xù)的代碼。

為什么不直接使用宏或者函數(shù)開始呢?因?yàn)槭录梢圆恍枰咨膱?zhí)行線來引用,它可以被重復(fù)調(diào)用多次,這樣不會(huì)造成代碼的混亂。它的作用跟宏和函數(shù)是類似的,但是可以應(yīng)用到更復(fù)雜和細(xì)節(jié)的代碼中,把代碼寫入事件,再調(diào)用事件。


一個(gè)飛行機(jī)制模式切換的自定義事件,參數(shù)可以自定義

使用按鍵即可調(diào)用事件

在任何時(shí)間,任何地方都可以調(diào)用自定義事件,在關(guān)卡藍(lán)圖也可以調(diào)用角色藍(lán)圖的自定義事件。


13. Print String 打印字符串


用來測(cè)試和Debug,在打包好的游戲或?qū)С龅挠螒蚴遣贿m用的。只在引擎內(nèi)部使用。

它會(huì)顯示在視口的左上角。在實(shí)現(xiàn)UI界面之前,可以輸出一些數(shù)據(jù)比如體力,生命值,來確認(rèn)你的代碼是否工作正常。

一個(gè)生命值遞減的打印顯示,在最后生命值小于0的時(shí)候打印出角色死亡


14. Variables 變量

Integer 整型

淡青綠色 完整的數(shù)字

Float 浮點(diǎn)型

草綠色 實(shí)數(shù),雙精度,如果需要更高精度的數(shù)字則需要用到

Text 文本

淡粉紫色 一般用來寫在名稱

String 字符串

玫紅色? 字符和數(shù)字的集合,用來表示句子

Vector 向量

淡金黃色 使用3個(gè)數(shù)字來表示3D坐標(biāo)的位置。x y z

Rotator 旋轉(zhuǎn)體

淡藍(lán)紫色 也是使用3個(gè)數(shù)字來表示旋轉(zhuǎn)位置 x y z

Transform 變換

橙色 可以用在旋轉(zhuǎn),位置,大小的變量上,三個(gè)值存在它一個(gè)上面

Object 對(duì)象

淺藍(lán)色 對(duì)屬性的引用,可以是光源,靜態(tài)網(wǎng)格體或者聲音盒子


15. Get All Actors Of Class 獲取類的所有Actor


可以用這個(gè)節(jié)點(diǎn)來更新關(guān)卡中當(dāng)前Actor的數(shù)量和類型,它可以放在GameMode里。每個(gè)target在創(chuàng)建或者銷毀的時(shí)候都可以調(diào)用這個(gè)節(jié)點(diǎn)。

這是一個(gè)效率較低的節(jié)點(diǎn),雖然它是一個(gè)獲取對(duì)象的通配符,使用它的話會(huì)遍歷當(dāng)前關(guān)卡的所有Actor。 不僅僅是你想要轉(zhuǎn)換的Actor。這樣會(huì)導(dǎo)致代碼變得緩慢。不要在每幀使用它,可以在事件開始運(yùn)行(Event BeginPlay)或者自定義事件(Custom Event)使用它,觸發(fā)一次。

但是不要太頻繁的使用它。

它基本就是一個(gè)Cast to,但是它返回指定這個(gè)類別的任何藍(lán)圖Actor的數(shù)組。

另外還需要使用索引編號(hào)取出單個(gè)的Actor,獲得一個(gè)副本,然后再訪問它以下的內(nèi)容。

如果不需要獲得類中的所有Actor可以使用Cast To來代替,因?yàn)槟憧赡芤残枰玫紼vent Tick來快速執(zhí)行操作,每次獲取類的所有Actor時(shí),可能就不夠快。


16. Blend Poses By Bool 按布爾混合姿勢(shì)

動(dòng)畫藍(lán)圖中的節(jié)點(diǎn)

通過一個(gè)布爾值混合兩個(gè)姿勢(shì)。

范例:在狀態(tài)機(jī)根據(jù)布爾值來確定不同狀態(tài)下的姿勢(shì),槍械是否裝備,條件為真使用帶槍姿勢(shì),條件為假使用普通姿勢(shì)。Blend Time代表姿勢(shì)變換需要的過渡時(shí)間。

在動(dòng)畫藍(lán)圖的事件圖表里設(shè)置好布爾值

在角色藍(lán)圖中的事件圖表設(shè)置觸發(fā)切換布爾值模式的代碼

這是快速有效的設(shè)置多個(gè)動(dòng)畫的方法。可以只寫一個(gè)狀態(tài)機(jī),但在不同的混合空間或者動(dòng)畫之間切換狀態(tài)。

17.Event Dispatcher 事件分發(fā)器

范例:從玩家藍(lán)圖觸發(fā)關(guān)卡藍(lán)圖中的事件,正常來講 無法在玩家藍(lán)圖投射關(guān)卡藍(lán)圖。


在玩家藍(lán)圖中創(chuàng)建事件分發(fā)器。使用事件分發(fā)器來傳遞變量,這樣可以根據(jù)等級(jí)的數(shù)值的變動(dòng)來改變關(guān)卡藍(lán)圖。

使用Call來調(diào)用這個(gè)事件分發(fā)器,并把參數(shù)Level設(shè)定好傳入。在調(diào)用的時(shí)候?qū)嶋H上是在整個(gè)游戲中將消息廣播到偵聽此事件的任何其他藍(lán)圖。

在關(guān)卡藍(lán)圖偵聽事件并執(zhí)行后續(xù)的代碼。

在關(guān)卡藍(lán)圖投射玩家藍(lán)圖并綁定這個(gè)事件分發(fā)器,從Event事件創(chuàng)建一個(gè)新的自定義事件,這時(shí)候可以調(diào)用Level這個(gè)變量。

在自定義事件后使用變量作為觸發(fā)條件來執(zhí)行后續(xù)的代碼。

事件分發(fā)器是一種很有效的調(diào)度方式,尤其是一次多個(gè)事件。因?yàn)樵谡{(diào)度程序時(shí)它會(huì)同時(shí)觸發(fā)所有綁定到它的事件。并且我們可以通過它傳遞變量。比如通常無法投射到的關(guān)卡藍(lán)圖。

藍(lán)圖接口只是做了一些與事件分發(fā)器略有不同的事情,它更多用于觸發(fā)事件,而藍(lán)圖接口更純粹地用于通信和觸發(fā)函數(shù),而不是事件。


18.Event Tick 事件Tick

事件Tick是個(gè)需要小心使用的事件,因?yàn)槿绻褂貌徽_它可能會(huì)導(dǎo)致游戲反應(yīng)滯后。

它會(huì)在每個(gè)Tick的時(shí)間觸發(fā),一個(gè)Tick是一幀,如果每秒60幀的速度運(yùn)行,那就會(huì)每秒運(yùn)行60Tick次。

事件Tick會(huì)觸發(fā)相當(dāng)多的次數(shù),它將歸檔每一幀,每秒144幀會(huì)使事件一秒觸發(fā)144次。它的運(yùn)行效能取決于你的電腦。如果用的太多或者使用錯(cuò)誤,對(duì)電腦的性能要求可能會(huì)很高。


一個(gè)很好的替代方案是使用自定義事件,因?yàn)楹芏嗳耸褂檬录ick來查找值。

如果一個(gè)生命值低于一個(gè)確定的值,那么可以創(chuàng)建一個(gè)自定義事件,然后當(dāng)收到傷害時(shí)再去檢查生命值。這樣就不需要一直檢查它,而只是需要的時(shí)候再檢查。

請(qǐng)確保正確使用Event Tick而不是過度的使用。

如果打印Delta Seconds會(huì)得到滿屏的延遲秒數(shù),大約在0.01左右,這取決于PC效率,有些電腦有更好的幀效率那么這個(gè)數(shù)字就會(huì)小一些。Delta Seconds是每次調(diào)用事件的間隔時(shí)間。如果想做一些依賴于幀速率的事情,無論有多少幀,這都是很好的選擇,這段代碼始終與系統(tǒng)的幀同步,并且結(jié)果始終相同。高FPS的話會(huì)有低Delta Seconds,低FPS會(huì)有高Delta Seconds。

代碼將根據(jù)幀速率在上下文中運(yùn)行。你可以在這個(gè)事件寫任何東西,它只是一直在觸發(fā)。

如果使用它查看生命值,之前說的是可以在自定義事件中實(shí)現(xiàn),按需啟動(dòng)。

但還是可以利用它進(jìn)行移動(dòng)輸入,然后使用Delta Seconds作為比例值,這樣無論幀率是多少,最終得到相同的移動(dòng)結(jié)果。

在轉(zhuǎn)向的時(shí)候獲取Delta Seconds 這樣可以確保幀速率與相機(jī)的轉(zhuǎn)向速率的同步。

Event Tick無法同時(shí)關(guān)聯(lián)兩個(gè)Branch分支節(jié)點(diǎn),我們使用序列Sequence來連接后續(xù)的代碼。

這樣可以同時(shí)觸發(fā)多個(gè)代碼。



19.Clamp限制

夾子:它限制另外兩個(gè)值之間的值。防止它高于或者低于某些值。如果需要精確的數(shù)字并且不需要手動(dòng)設(shè)置。比如檢查生命值是否超過100,如果超過了就將其重置回100,它可以自動(dòng)執(zhí)行這樣的操作。

Clamp節(jié)點(diǎn)將確保Health在最小值0.0和最大值100.0的區(qū)間內(nèi)輸出。

同理關(guān)于整數(shù),向量,角度等等都是同樣的方式。


藍(lán)圖節(jié)點(diǎn)基礎(chǔ)知識(shí)Nodes - 虛幻引擎的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
鄄城县| 友谊县| 兴业县| 文昌市| 都昌县| 永平县| 咸宁市| 东山县| 台湾省| 古交市| 兴宁市| 子长县| 诏安县| 武功县| 濮阳县| 清远市| 三门县| 宣城市| 兴文县| 龙井市| 渭源县| 抚松县| 富蕴县| 格尔木市| 黄梅县| 常熟市| 天等县| 左贡县| 广宗县| 随州市| 长宁县| 宜黄县| 利川市| 祥云县| 原阳县| 平利县| 房产| 周至县| 商河县| 泰来县| 邹平县|