UE4 RPG游戏实战开发(八):背包道具拖拽丢弃

本文正在参加「金石计划」

拖拽丢弃

在上一篇文章里,咱们实现了一个简单的道具背包(Inventory)功能,玩家可以拾起掉落在地上的道具,然后显示在背包中。并且可以通过按钮事件来使用和丢弃道具,本篇咱们继续来优化这个背包功能,加上拖拽丢弃功能。

首先在开始之前,先来解决上一次功能的 bug,是我的锅就让我来背吧!

问题如下:

  1. 当道具数量小于等于1的时候,丢弃道具会导致程序崩溃。
  2. 没有校验使用和丢弃道具的数量,导致数量不足时丢弃也能够 SpawnActor。

解决方案:

  1. 由于道具数量小于等于1的时候,丢弃道具的逻辑中没有获取到 PlayerBP 蓝图对象,所以当 SpawnActor 的时候获取坐标会出现 Access None 的错误
  2. 添加一个 isExisted 的布尔变量,来判断背包当前该物品还在不在

优化后的蓝图如下:

使用道具逻辑:

UE4 RPG游戏实战开发(八):背包道具拖拽丢弃

丢弃道具逻辑:

UE4 RPG游戏实战开发(八):背包道具拖拽丢弃

拖拽事件

打开 UI_ItemCube 蓝图,点击 override 为其添加拖拽事件,如图:

UE4 RPG游戏实战开发(八):背包道具拖拽丢弃

为 ThumbNail 缩略图添加点击事件 On_Thumbnail_MouseButtonDown,如图:

UE4 RPG游戏实战开发(八):背包道具拖拽丢弃

接下来,我们来创建一个 Icon widget, 用于拖拽的时候显示附着于鼠标上显示,创建 Widget 这里就不再详细说了,不明白的可以看之前的教程,创建好的 widget 取名为 UI_ItemDrag,UI 设计如图:

UE4 RPG游戏实战开发(八):背包道具拖拽丢弃

添加变量 ThumbNail:

UE4 RPG游戏实战开发(八):背包道具拖拽丢弃

UI_ItemDrag 创建好之后,我们回到 UI_ItemCube 蓝图中,给 On_Thumbnail_MouseButtonDown 和 OnDragDetected 函数添加逻辑:

UE4 RPG游戏实战开发(八):背包道具拖拽丢弃

UE4 RPG游戏实战开发(八):背包道具拖拽丢弃

打开 UI_Inventory 蓝图,这里需要做一个优化;由于我们之前设计的背包 UI 没有覆盖整个屏幕,会导致我们拖拽的时候鼠标会获取不到当前的坐标信息,所以这里需要添加一个 Border 对象,来覆盖整个屏幕,并把背景色设置为透明,如图:

UE4 RPG游戏实战开发(八):背包道具拖拽丢弃

接下来实现 UI_Inventory 实现 OnDrop 函数,如图:

UE4 RPG游戏实战开发(八):背包道具拖拽丢弃

实现其蓝图逻辑:

UE4 RPG游戏实战开发(八):背包道具拖拽丢弃

保存,运行游戏效果:

UE4 RPG游戏实战开发(八):背包道具拖拽丢弃

获取工程

关注我的公号 HelloWorld杰少 回复关键字 ‘RPG’ 获取游戏工程文件 获取完整的工程。

结尾

背包拖拽丢弃的功能就完成了,下篇文章我们来讲讲如何给角色添加生命与魔法值。

往期文章:

请你喝杯 ☕️ 点赞 + 关注哦~

  1. 阅读完记得给我点个赞哦,有👍 有动力
  2. 关注公众号— HelloWorld杰少,第一时间推送新姿势

最后,创作不易,如果对大家有所帮助,希望大家点赞支持,有什么问题也可以在评论区里讨论😄~**

原文链接:https://juejin.cn/post/7217724300945260599 作者:HelloWorld杰少

(0)
上一篇 2023年4月4日 上午10:57
下一篇 2023年4月4日 上午11:07

相关推荐

发表回复

登录后才能评论