UE小知識(shí):函數(shù),宏,事件有啥區(qū)別?
很多剛接觸ue的小伙伴不太清楚函數(shù),事件和宏的區(qū)別,什么時(shí)候用哪個(gè)? 怎么用?今天我們通過(guò)這篇文章來(lái)了解一下 如果把他們?nèi)齻€(gè)比如員工,他們都可以干單獨(dú)的工作,你可以把分配給他們的工作寫到函數(shù),事件或者宏的里面 函數(shù)可以有
返回值
,也就是說(shuō)他干完工作會(huì)給你一個(gè)你需要的反饋
宏也可以有返回值,而且他還可以有
多個(gè)輸入和輸出
引腳
,做到一心多用
事件比較專一,他沒(méi)有反饋,但是他的里面可以增加延遲這樣的節(jié)點(diǎn)(宏也可以有),而這個(gè)節(jié)點(diǎn)在函數(shù)里是無(wú)法使用的,還有一些時(shí)間性的節(jié)點(diǎn),比如時(shí)間軸也無(wú)法在函數(shù)使用
事件一般用于觸發(fā),比如增強(qiáng)型輸入,debug key,重疊事件,點(diǎn)擊事件,都是觸發(fā)性的,達(dá)到某個(gè)條件就可以執(zhí)行,當(dāng)然自定義事件類似函數(shù)和宏,可以隨時(shí)調(diào)用 函數(shù)的執(zhí)行,系統(tǒng)會(huì)執(zhí)行完整個(gè)函數(shù)后才會(huì)返回結(jié)果,他執(zhí)行在同一個(gè)線程里,可以等待執(zhí)行,事件只要觸發(fā)就會(huì)繼續(xù)執(zhí)行下去,他可以執(zhí)行在不同的線程,就是一個(gè)開關(guān) 函數(shù)和事件這兩個(gè)員工是可以
跨部門
執(zhí)行任務(wù)的,其他部門想調(diào)用他們哥倆就可以隨時(shí)調(diào)用,當(dāng)然你得cast轉(zhuǎn)換一下他們所屬的藍(lán)圖部門,或處于這個(gè)部門的子部門
而宏則只能在
本藍(lán)圖部門
工作,外部不能調(diào)用他們,但是如果你的藍(lán)圖作為父級(jí),有子級(jí),也就是分部部門,那么他們可以調(diào)用父級(jí)部門的宏 或者建立
藍(lán)圖宏庫(kù)
,選擇object,這樣所有藍(lán)圖都可以調(diào)用該宏
父類是actor,子類可以使用父類的宏
父類是object,所有藍(lán)圖都可以使用這個(gè)父類的宏
父類是class,子類無(wú)法使用父類的宏
事件和宏是
沒(méi)有局部變量
的,只能使用全局變量 函數(shù)可以創(chuàng)建專屬自己的
局部變量
,這個(gè)變量只在當(dāng)前函數(shù)里使用有效,是私有的財(cái)產(chǎn)
什么時(shí)候用他們?
觸發(fā)類的就用事件,事件注重觸發(fā)條件,不注重過(guò)程,比如我要點(diǎn)擊某個(gè)按鍵使用某個(gè)技能,就可以用事件觸發(fā) 函數(shù)和宏注重結(jié)果,比如我要傳遞一個(gè)HP過(guò)去,然后計(jì)算一下我升級(jí)之后HP增加多少,我就可以用函數(shù)或宏,算完的新的HP傳遞回來(lái),我還需要這個(gè)變量 宏適合內(nèi)部調(diào)用,重復(fù)性的數(shù)值計(jì)算,其他藍(lán)圖不需要這個(gè)功能,這個(gè)功能是我這個(gè)藍(lán)圖獨(dú)有的,我就可以用宏,另外宏也很適合if ,switch,flipflop這類的控制流節(jié)點(diǎn) 跨藍(lán)圖調(diào)用,需要有返回值反饋的就用函數(shù),比如我們可以建立一個(gè)函數(shù)庫(kù),作為公用函數(shù)在任意藍(lán)圖調(diào)用,函數(shù)有些類似工具人 當(dāng)然,函數(shù)和宏里可以調(diào)用事件,事件里也可以調(diào)用函數(shù)和宏,所以
如何靈活使用就看程序本身實(shí)際需要,并無(wú)硬性需求
根據(jù)網(wǎng)絡(luò)上的原理介紹資料顯示,從編程語(yǔ)言底層執(zhí)行效率來(lái)說(shuō),函數(shù)的開銷更大一些,因?yàn)樗峙湫碌臈?臻g,每次return返回也要釋放棧,會(huì)額外增加執(zhí)行負(fù)擔(dān),宏只在編譯前進(jìn)行,不額外分配多余空間,只占編譯時(shí)間,執(zhí)行速度更快,當(dāng)然,咱也不是研究底層計(jì)算機(jī)原理和代碼的,所以這段就當(dāng)做個(gè)參考,現(xiàn)今cpu執(zhí)行效率都很高,這點(diǎn)差距除非是很大型的數(shù)據(jù)處理,一般在實(shí)際運(yùn)行中不會(huì)有太大差別。 以上內(nèi)容由老蔣原創(chuàng)整理,如需轉(zhuǎn)發(fā)請(qǐng)注明出處