藍圖之間通信的幾種常用方式

藍圖之間通信的幾種常用方式
?
1.?直接拾取
?

在變量中打開小眼睛使這個變量成為公有變量,此actor放入場景后,
?

選中它,在細節(jié)面板可以看到框中新加的屬性,可以點擊吸管去選擇場景中的其他藍圖,該藍圖類型是你在變量中設定好的變量類型。這樣兩者之間就有了關聯(lián)。
特點:直接,簡單,但有特異性一對一不靈活。
適用于簡單粗暴的功能。
?
2.?類型轉換
?

Castto到其他藍圖類型這樣就與其他這個類型的藍圖或者繼承這個類型的藍圖都有了聯(lián)系。
特點:可以指定單個或者一類藍圖,但工程中過多使用會造成不必要的浪費,性能損耗。
適用于最初設定時轉換一個大類。但學習中常常用于簡單粗暴的碰撞檢測。
注:碰撞檢測也是藍圖之間通信的一種常用方式。
?
3.得到指定藍圖類的成員
?

GetAllActorsOfClass再從這個類中遍歷得到指定的對象(實例),此對象必須與這個藍圖對象在同一個場景里,如果場景里有不止一個這類對象則返回最后一個。
?

如果場景里有不止一個這類對象,可以添加判斷來指定到數組的哪一個對象。
特點:可以指定單個或者一類藍圖對象實例,但要找到場景中所有包含此類的對象較為損耗性能,且數組遍歷較慢,最好不要用于Tick事件。
適用于單個事件。
3.?接口
?



創(chuàng)建藍圖接口,并在接口里創(chuàng)建函數
?

?



接收接口的藍圖內,類設置細節(jié)面板添加接口。
?
接收接口的藍圖內添加接口事件。
?
發(fā)送接口的藍圖內添加接口消息
特點:發(fā)送方與接收方無引用關系,只有在需要時才會觸發(fā),有利于搭建功能性框架和重復調用。
適用于所有規(guī)范性藍圖框架搭建。
注:上圖中,因為接口之間沒有引用,就不會報錯,如果的Tree沒有被玩家檢測到就不會觸發(fā)相應的接口事件。因此舉例一種通信方式:
?

每幀檢測與玩家碰撞器所重疊的Actors,遍歷
?

篩選有此接口的藍圖實例并保存起來,這樣就找到了Tree。
?

截完所有節(jié)點。
這時候把數組遍歷放到Tick事件是游戲功能的需求,它限定了尋找范圍是與玩家碰撞器重疊的Actor,因此也不會損耗太多。