RPC游戏案例【3. 装备系统】
RPC游戏案例【3. 装备系统】
鲸拓工作室装备系统
本章工程文件为:RPG_Tutorial_Series_07,如遇问题可下载项目文件之后自行对照
预期效果:可以捡装备,并配备装备系统UI,也可通过系统上装备
数据管理
首先创建一个S_Weapons结构体,内容如下
其中E_Weapon_Types枚举的内容如下
创建一个DB_Weapons的数据表,补充如下内容
创建一个S_Slots结构体,用于存储武器数据的引用
接着创建一个BP_Weapon的Actor蓝图,可以通过配置来设置不同的网格体,下面设置的是Heavy_Sword
编写完成之后,将这个Actor拖到场景里,就会看到对应的Heavy_Sword模型。如果在ItemData里选择其他的模型,场景里的模型也会实时发生变化
蓝图组件
创建一个蓝图组件,命名为BPC_EquipmentSystem,我们在这里实现装备系统的主要逻辑
在此之前,先创建一个输入,命名为IA_Interact
当玩家按下E键的时候,就捡起面前的物体
进入BPC_EquipmentSystem,创建一个AddWeapon函数
当玩家按下E键的时候,根据摄像机的位置和方向,检测前方是否有物体,有的话存入weaponSlots里
UI
首先在Equipment_System下创建一个UI文件夹,然后创建两个用户控件
WB_EquipableSlot的内容如下
WB_Equipment的内容如下
接着新增一个输入,按Enter键就弹出这个装备栏
修改BPC_EquipmentSystem,补充菜单弹出逻辑
编译保存,进入游戏里,按下Enter键,就可以弹出菜单了
我们再创建一个WB_ItemSlot
在WB_Equipment中创建一个Item List的Canvas,并填入垂直框和图像
垂直框和图像的大小与Canvas一样
补入如下逻辑
编译运行,当我们按E收入武器之后,再按Enter,点击插槽,就能看到武器栏了
视口
接下来我们完善一下UI,下面是完成效果
首先打开BP_ThirdPersonCharacter,创建一个SpringArm和SceneCaptureComponent2D
其中SceneCaptureComponent2D的Texture Target放在以下文件夹里
创建好之后打开事件图表,在Event Begin Play后面追加这一段
然后运行游戏,就会发现UI文件夹下面生成了CharacterEquipmentTextureTarget
我们右键CharacterEquipmentTextureTarget,然后创建一个材质,命名为M_CharacterEquipmentTextureTarget
打开CharacterEquipmentTextureTarget,设置尺寸
打开M_CharacterEquipmentTextureTarget,编写如下材质
然后打开WB_Equipment,添加如下组件
打开WB_ItemSlot,编写鼠标点击事件,创建Item变量
打开WB_Equipment,补充Assign Item Slot自定义事件
再在构造事件里补充Item的设置
最后打开WB_EquipableSlot,完善鼠标点击事件即可
插槽
接着我们来实现插槽,让每一个框出现的内容都不一样
首先打开BP_ThirdPersonCharacter,将原来的网格体重命名,然后复制插槽名
打开事件图表,新增一个EquipItem的自定义事件
打开S_Weapons,新建一个插槽项,将刚刚复制的插槽名设置为默认值
打开WB_Equipment,将原来的构造函数替换成如下的自定义事件
再打开WB_EquipableSlot,修改点击事件,调用这个函数即可
武器
我们接下来给角色再加几种武器,分别是盾牌和弓箭
首先打开Resource文件夹,将下面这两个文件夹导入进去,导入选项默认就可以了
打开M_Medieval_Shield,将材质贴图放进去
打开弓箭文件夹,新建一个M_Wooden_Bow的材质,将相关贴图都放进去,然后应用在弓箭上
接着打开SK_Mannequin,创建两个插槽,调整弓箭和护盾的位置
然后打开BP_ThirdPersonCharacter,创建两个静态网格体,将插槽应用上去
同时在事件图表中新增两个自定义事件,用于装备武器
打开WB_Equipment,创建四个文本
然后修改Assign Item Slot事件里的逻辑
最后在DB_Weapons里面补充对应的数据即可