UE4创建背包拖拽功能(学习笔记)

第一步:创建DragDropOperation的子类

创建DragDropOperation的子类WigdetDrag,声明两个public变量,Widget(类型为UserWidget),MouseOffset(Vector2D),并勾选上Expose On Spawn。
Widget变量设置
MouseOffset变量设置

第二步:在背包蓝图中,重写鼠标点击方法

打开背包蓝图,将鼠标放在左侧Functions上,点击Override按钮,选择On Mouse Button Down。按照下图连接
鼠标点击绑定拖拽事件

第三步:重写OnDragDetected方法

再次将鼠标放在Functions上,点击Override按钮,选择 On Drag Detected,连接如下
重写OnDragDetected方法
创建拖拽事件,然后将背包界面赋予到WidgetDrag蓝图中的Wigdet变量上,将鼠标位置转换为屏幕坐标,赋予MouseOffset上,然后移除拖拽后原来位置的背包界面。
到这里,就实现了背包的拖拽,并且可以删除之前的背包界面,但是此时拖拽背包后,背包会消失,是因为没有创建鼠标松开后的背包界面。因为当前的背包已经删除了,所以在背包蓝图中无法创建,只能去主UI上去创建。

第四步:创建松开鼠标后的背包界面

打开主UI界面,重写OnDrop方法,连接如下:
重写OnDrop方法
确保主UI的鼠标碰撞是打开状态,因为这里需要接受到松开鼠标时的鼠标位置,转换成屏幕坐标,然后减去开始拖拽时的坐标(MouseOffset),最后得到的就是当前背包界面所在的位置(这里没明白为啥,教程中老师没解释,就这么做了,想了很久也没想明白,有没有大佬能说一下)。
主UI的碰撞设置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值