藍(lán)圖是UE4中非常重要的系統(tǒng),要想使用藍(lán)圖必然涉及到不同藍(lán)圖之間的互相調(diào)用,這種互相調(diào)用有一個專業(yè)術(shù)語叫做“藍(lán)圖間通信”。
有這樣一個需求:有一個燈的藍(lán)圖(BP_Light),內(nèi)部有一個自定義事件ControlLight(bool)通過一個布爾值控制燈的開關(guān)。玩家按Q鍵時可以控制燈的開關(guān)。
我們先來分析一下:想要實現(xiàn)上面的需求,需要在Character藍(lán)圖中控制BP_Light藍(lán)圖,這里就用到了兩個藍(lán)圖之間的通信。
在正式開始之前我們首先準(zhǔn)備工程。新建基于第三人稱的藍(lán)圖工程(不太熟悉的可以參考之前的文章),并創(chuàng)建基于Actor的藍(lán)圖類,命名為BP_Light,雙擊打開。添加StaticMesh組件和PointLight組件,如下圖所示。
切換到EventGraph,開始編寫自定義事件ControlLight(bool),拖動燈光組件到事件藍(lán)圖中,從輸出端口拉出一條線,搜索Set Visibility并將自定義事件的布爾參數(shù)連接到Set Visibility節(jié)點的New Visibility端口。整體效果如下圖所示。
接下來設(shè)置玩家交互按鍵操作。打開工程設(shè)置(Edit>Project Settings),在打開的窗口中找到輸入(Engine>Input),在InputAction中添加Interaction,對應(yīng)的快捷鍵為Q,具體如下圖所示。
打開ThirdPersonCharacter藍(lán)圖,切換到事件圖標(biāo),搜索Interact并創(chuàng)建節(jié)點,至此,我們前期的準(zhǔn)備工作已經(jīng)完成,藍(lán)圖間通信的每種方式都是以這個模板為基礎(chǔ)的,以后不再贅述。
想實現(xiàn)藍(lán)圖間通信有很多種方式,我們會一一為大家講解。
第一種方式:直接變量引用
第一種也是最直接的方式,我們在Character中引用BP_Light變量,如下圖所示。
之后將Light變量拖動到事件圖標(biāo)中,并從輸出端口拉出一條線,搜索ControlLight,并正確連接執(zhí)行端口完成后如下圖所示。
目前存在的問題是Light變量只是定義了,并沒有賦值。所以接下來要給變量賦值??梢杂袃煞N方式:
1)將變量公開,在關(guān)卡中進(jìn)行賦值。
點擊Light變量旁邊的小眼睛使其處于打開的狀態(tài),借助吸取工具進(jìn)行選擇即,可如下圖所示。
2)在EventBeginPlay事件后查找場景中所有的BP_Light類型,并將找到的第一個賦予給變量,如下圖所示。
經(jīng)過兩種方式中的任意一種,運行游戲即可實現(xiàn)我們的需求。
好了,今天的分享就到這里,更多關(guān)于unity游戲培訓(xùn)的問題,歡迎咨詢千鋒教育在線名師。千鋒教育擁有多年IT培訓(xùn)服務(wù)經(jīng)驗,采用全程面授高品質(zhì)、高體驗培養(yǎng)模式,擁有國內(nèi)一體化教學(xué)管理及學(xué)員服務(wù),助力更多學(xué)員實現(xiàn)高薪夢想。