本項(xiàng)目同步上傳于github和coding上,國(guó)內(nèi)讀者可以通過(guò)在coding下載項(xiàng)目。也歡迎你加入我的UE4學(xué)習(xí)交流QQ群:872537977。如果你喜歡我寫(xiě)的文章,也希望你點(diǎn)贊、收藏、轉(zhuǎn)發(fā)。謝謝!
github地址:https://github.com/Liweimin0512/uRPG
coding地址:https://git.dev.tencent.com/JeremyBrett/uRPG.git
我在開(kāi)始寫(xiě)開(kāi)發(fā)日記之前,曾經(jīng)嘗試制作不同的角色(或者說(shuō)我想做一個(gè)MOBA游戲),這個(gè)想法在我寫(xiě)開(kāi)發(fā)日志之后被擱置了,但是之前的一些美術(shù)資源我沒(méi)有刪除。想了想,不如就做一個(gè)選人界面吧。
數(shù)據(jù)準(zhǔn)備
與上一節(jié)中的ItemData類(lèi)似,這里我們將所有Character保存在數(shù)據(jù)表中,所以首先創(chuàng)建一個(gè)結(jié)構(gòu)圖,取名為CharacterData
還有一個(gè)需要注意的就是,既然需要選人,那么就沒(méi)有默認(rèn)角色這回事了,在GameMode中需要改一下。
選人界面UI設(shè)計(jì)
新建一個(gè)用戶界面,取名為UMG_SelectCharacter
。我們采用極簡(jiǎn)風(fēng)格的美術(shù)設(shè)計(jì),設(shè)計(jì)的UI很簡(jiǎn)單美觀,如下圖所示
創(chuàng)建UI
這里我們假設(shè)游戲開(kāi)始時(shí)候直接選擇角色,那么這個(gè)創(chuàng)建UI的工作交給GameMode似乎更合適。這里我們?cè)贐P_GameMode中添加一處邏輯。選人按鈕響應(yīng)事件
回到UMG_SelectCharacter
,這里我們思考一下點(diǎn)擊按鈕時(shí)候做的兩件事,其1就是創(chuàng)建角色,并且將這個(gè)UI界面干掉。其中創(chuàng)建角色的邏輯應(yīng)該不止在此處使用,比如當(dāng)我們角色死亡復(fù)活時(shí),亦或者傳送時(shí)候,應(yīng)該都需要用到,所以依然放在GameMode中。
Character改動(dòng)
BP_CharacterBase
最主要的改動(dòng)是添加了一個(gè)變量ChaName
,這個(gè)變量需要設(shè)置為在生成時(shí)顯示的,方便調(diào)用
SpawnCharacter
方法。而
SpawnCharacter
主要是根據(jù)數(shù)據(jù)生成Actor,這里主要是對(duì)Mesh和動(dòng)畫(huà)藍(lán)圖的設(shè)置,之后會(huì)繼續(xù)擴(kuò)展。通過(guò)ChaName查找到數(shù)據(jù)表中對(duì)應(yīng)的行,然后將數(shù)據(jù)設(shè)置上,就完事了,很簡(jiǎn)單,這里就不詳述了。
創(chuàng)建角色邏輯
創(chuàng)建角色需要傳入角色名,通過(guò)角色名Spawn Actor
,選擇“BP_CharacterBase”并將角色名傳遞過(guò)去,位置我們直接寫(xiě)死。成功創(chuàng)建之后,就是將Controller和Character建立起聯(lián)系,這里比較重要的節(jié)點(diǎn)就是Possess,就是它實(shí)現(xiàn)的控制器對(duì)不同角色之間的切換。
可以參考在藍(lán)圖中支配Pawn。
測(cè)試
現(xiàn)在,各模塊之間算是各司其職,不同的方法根據(jù)定位不同也分別添加在了不同的模塊中。讓我們運(yùn)行一下,完美。需要說(shuō)明的是,目前劍士這個(gè)角色還是有問(wèn)題的,之后會(huì)在專(zhuān)門(mén)的文章中介紹。這里就不多談了。
下集預(yù)告
下一期,我們來(lái)研究一下掉落物的拾取,背包系統(tǒng)的實(shí)現(xiàn)。