查看原文
其他

程序丨教程:制作一个类似《神秘海域》的装备系统(下)

2017-05-05 王成林 Gad-腾讯游戏开发者平台

翻译:王成林(麦克斯韦的麦斯威尔 ) 

审校:黄秀美(厚德载物)


系列回顾:

教程:制作一个类似《神秘海域》的装备系统(上)


Widget_ItemInfo


新建一个名为Widget_ItemInfo的控件。这是它的层级:


https://v.qq.com/txp/iframe/player.html?vid=b03997xv33h&width=500&height=375&auto=0


打开事件图表并加入这些变量:


表9


添加一个名为OnClicked的事件调度器。

添加一个名为SetInvManager的函数,它有一个输入,类型为InventoryManager引用:



以及另一个名为SetItemRef的函数,它有一个输入,类型为BP_BaseWeapon引用。



新建一个名为UpdateWidget的自定义事件:



如果武器被装备上了,该事件会隐藏Equipped文本并将武器的名称设置给UI。


在OnClicked(button_item)中我们需要创建ItemActions控件并将它的位置改为鼠标位置:



如你所见我在传递Weapon和Manager的引用。


UI_Inventory


现在有了这些控件我们可以随着Inventory UMG移动了。新建一个名为UI_Inventory的控件。


首先创建一张你的角色在黑色背景中的截图。



将它导入并创建一个名为M_Character的材料:



这样我们可以得到UMG中的alpha。

打开UI_Inventory,这里是它的层级:


https://v.qq.com/txp/iframe/player.html?vid=t0399wugdop&width=500&height=375&auto=0


打开事件图表并添加一个名为InventoryRef的变量,它的类型为InventoryManager引用。


添加一个名为SetInvManager的新函数:



添加另一个名为ClearSlots的函数:



该函数负责删除添加到Overlays中的控件。

添加另一个名为UpdateAmmo的函数:



该函数设置了文本控件。

添加另一个名为PopulateSlots的函数,它含有一个本地变量:

·  L_WeaponRef(BP_BaseWeapon引用)


第一部分:


第二部分:


它看上去很复杂,但其实它只是更新了已创建控件的数据。就是那么简单。

新建一个名为UpdateData的自定义事件:



在Construct中我们设置Input Mode并显示鼠标:


新建一个名为CloseInventory的自定义事件:


最后是OnClicked(Button_Close):

这是UMG中的所有内容了!


显示物品栏


现在我们需要触发UI_Inventory。打开第三人称角色并添加名为UI_Inventory的变量,它的类型为UI_Inventory引用。


如果你在InventoryManager组件上点击右键,你会发现你可以添加Inventory StateChanged 事件:



这样我们只会在物品栏更新时更新UMG。

我使用“I”键来触发物品栏UI:



就是那么简单!


最终结果:


https://v.qq.com/txp/iframe/player.html?vid=e03995kv0f3&width=500&height=375&auto=0



【版权声明】

原文作者未做权利声明,视为共享知识产权进入公共领域,自动获得授权。


今日推荐


干货!深度解析游戏引擎开发中的算法

虚幻引擎4:用C++实现一个近战连招系统



添加小编微信,可享双重福利

1.加入GAD程序猿交流基地

获取行业干货资讯,观看大牛分享直播

2.直接领取60G独家程序资料库,地址在小编朋友圈

包括腾讯内部分享、文章教程、视频教程等全套资料

 

↓长按添加小编GAD苏苏↓


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存