小白學(xué)UE4——藍(lán)圖通信使用方式超詳細(xì)解釋(可能是最詳細(xì)的藍(lán)圖通信講解)
????????首先要明確知道藍(lán)圖通信是干嘛用的?在UE4里面,兩對(duì)象之中的參數(shù)是互相獨(dú)立的,比如說(shuō)角色身上有血量,怪物身上也有血量。但是如果我要給特定怪物扣血,這個(gè)時(shí)候就需要用到藍(lán)圖通信。因?yàn)槲覀冊(cè)谟螒蛑心軌蚩刂频氖墙巧?,而角色里面,是沒(méi)有存怪物的血量的,如果我要怪物扣血,就必須想辦法告訴怪物,它要扣減血量。
????????通過(guò)角色來(lái)告訴怪物扣減血量的行為,就叫做藍(lán)圖通信。
????????另外要特別強(qiáng)調(diào)的是,藍(lán)圖通信是指我要把一些事情從一個(gè)【對(duì)象】里面?zhèn)鹘o另一個(gè)【對(duì)象】。通信必須要在若干個(gè)【對(duì)象】之間進(jìn)行,而不能夠在兩個(gè)類(lèi)之間進(jìn)行。
????????關(guān)于什么是類(lèi)和什么是對(duì)象,就看我上一篇發(fā)的文章。
????????所以我們?cè)谕ㄐ诺臅r(shí)候,最大的問(wèn)題是怎么樣找到我們的對(duì)象。
????????那么一般我們確定通信的對(duì)象的方式有以下幾種。
????????第1種:通過(guò)玩家控制器來(lái)找到我們想要通信的對(duì)象,在ue4的藍(lán)圖里面默認(rèn)是有一個(gè)辦法能夠直接獲取到玩家控制器,節(jié)點(diǎn)名字叫做【獲取玩家控制器】,從而能夠獲取到玩家的角色作為對(duì)象來(lái)進(jìn)行通信。這種通信方法是專用的,只能夠用來(lái)獲取玩家的控制角色。
????????第2種:就是特定的事件觸發(fā)的對(duì)象。比如說(shuō)我使用了一個(gè)【組件開(kāi)始重疊時(shí)】的事件。那么這個(gè)觸發(fā)事件就可以找到發(fā)生“重疊”事件的對(duì)象,從而知道通信的對(duì)象是誰(shuí)。比如說(shuō)當(dāng)a怪物碰到了b怪物的時(shí)候,我就可以把一些特定的參數(shù)從a怪物這里傳給這個(gè)和a怪物碰到了的b怪物。類(lèi)似的事件還有【組件結(jié)束重疊時(shí)】和【組件命中時(shí)】。
????????第3種:那么我想要在兩個(gè)怪物沒(méi)有觸碰到的時(shí)候來(lái)進(jìn)行通信的話,又該怎么辦呢?比如說(shuō)一種召喚師類(lèi)型的怪物,他能夠召喚小兵,那么就可以通過(guò)【生成actor】這個(gè)節(jié)點(diǎn),來(lái)和生成的對(duì)象進(jìn)行通信,從而實(shí)現(xiàn)召喚師和召喚小兵之間的通信。
????????第4種:骨骼和動(dòng)畫(huà)之間,有一種特定的通信節(jié)點(diǎn)【嘗試獲取pawn擁有者】,再通過(guò)【cast to】 節(jié)點(diǎn)進(jìn)行強(qiáng)轉(zhuǎn)來(lái)進(jìn)行通信。這個(gè)節(jié)點(diǎn)我也不是很清楚底層的運(yùn)作原理,但是猜測(cè)是在骨骼綁定了動(dòng)畫(huà)之后,通過(guò)【嘗試獲取pawn擁有者】節(jié)點(diǎn)就可以獲得動(dòng)畫(huà)綁定的骨骼對(duì)象,從而進(jìn)行通信。
????????第4種的補(bǔ)充:如果比較追根究底的話,可能會(huì)問(wèn)【嘗試獲取pawn擁有者】這個(gè)不是已經(jīng)指定了通信對(duì)象了嗎?為什么還需要一個(gè)節(jié)點(diǎn)呢?因?yàn)槲乙膊皇呛苁煜に{(lán)圖,也在摸索學(xué)習(xí)中,關(guān)于這個(gè)問(wèn)題我有兩個(gè)猜測(cè):
????????????????第一種,一個(gè)動(dòng)畫(huà)會(huì)被多個(gè)對(duì)象綁定,所以需要一個(gè)【嘗試獲取pawn擁有者】,來(lái)獲取到具體的所有對(duì)象,然后再通過(guò)【cast to】篩選符合條件的【類(lèi)】進(jìn)行通信。
????????????????第二種,我們?cè)诰帉?xiě)藍(lán)圖的時(shí)候,是沒(méi)有對(duì)象具體存在的,那么我們就沒(méi)有辦法直接在【對(duì)象】的基礎(chǔ)上來(lái)編寫(xiě)藍(lán)圖,我們只能夠在【類(lèi)】的基礎(chǔ)上來(lái)編寫(xiě)藍(lán)圖,所以在編寫(xiě)藍(lán)圖的時(shí)候,我們就需要【cast to】來(lái)獲取到指定的【類(lèi)】,然后在【類(lèi)】的基礎(chǔ)上獲取到這個(gè)【類(lèi)】里面的變量,從而對(duì)這些變量進(jìn)行編寫(xiě)。
????????第5種:可以獲取場(chǎng)景內(nèi)同一個(gè)【類(lèi)】中的所有【對(duì)象】,然后對(duì)所有對(duì)象進(jìn)行通信。比如說(shuō)我要場(chǎng)景中所有的小兵都扣血,那么就可以通過(guò)【獲取類(lèi)的所有actor】,來(lái)獲取到該類(lèi)的對(duì)象,然后都進(jìn)行操作。不過(guò)這個(gè)節(jié)點(diǎn)很耗性能,一般用的很少。
????????第6種:應(yīng)該還有很多辦法能夠獲取到指定的對(duì)象,但是我就不清楚了,希望有大神補(bǔ)充這些類(lèi)似的節(jié)點(diǎn)。