藍(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)通過一個(gè)布爾值控制燈的開關(guān)。玩家按Q鍵時(shí)可以控制燈的開關(guān)。
我們先來分析一下:想要實(shí)現(xiàn)上面的需求,需要在Character藍(lán)圖中控制BP_Light藍(lán)圖,這里就用到了兩個(gè)藍(lán)圖之間的通信。
在正式開始之前我們首先準(zhǔn)備工程。新建基于第三人稱的藍(lán)圖工程(不太熟悉的可以參考之前的文章),并創(chuàng)建基于Actor的藍(lán)圖類,命名為BP_Light,雙擊打開。添加StaticMesh組件和PointLight組件,如下圖所示。
切換到EventGraph,開始編寫自定義事件ControlLight(bool),拖動(dòng)燈光組件到事件藍(lán)圖中,從輸出端口拉出一條線,搜索Set Visibility并將自定義事件的布爾參數(shù)連接到Set Visibility節(jié)點(diǎn)的New Visibility端口。整體效果如下圖所示。
接下來設(shè)置玩家交互按鍵操作。打開工程設(shè)置(Edit>Project Settings),在打開的窗口中找到輸入(Engine>Input),在InputAction中添加Interaction,對(duì)應(yīng)的快捷鍵為Q,具體如下圖所示。
打開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í)行端口完成后如下圖所示。
目前存在的問題是Light變量只是定義了,并沒有賦值。所以接下來要給變量賦值。可以有兩種方式:
1)將變量公開,在關(guān)卡中進(jìn)行賦值。
點(diǎn)擊Light變量旁邊的小眼睛使其處于打開的狀態(tài),借助吸取工具進(jìn)行選擇即,可如下圖所示。
2)在EventBeginPlay事件后查找場(chǎng)景中所有的BP_Light類型,并將找到的第一個(gè)賦予給變量,如下圖所示。
經(jīng)過兩種方式中的任意一種,運(yùn)行游戲即可實(shí)現(xiàn)我們的需求。
好了,今天的分享就到這里,更多關(guān)于unity游戲培訓(xù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)想。