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