UGUI的Drag实现鼠标拖拽

  • 我们可以让类继承某些事件接口,然后实现接口的方法,就可以实现相应的功能
  • 比较常用的有这么几个接口
  • 接口都是以大写I为前缀的
IBeginDragHandler  // 开始拖拽处理器,开始拖拽的一瞬间触发
IDragHandler  // 拖拽中事件处理器,拖拽过程中持续触发
IEndDragHandler //结束拖拽事件处理器
接口使用步骤
  • 首先需要引入UnityEngine.EventSystems命名空间
  • 在当前类继承的父类后方,用逗号分隔,写需要使用到接口名
  • 鼠标放到接口名上,右键——实现接口——显示实现接口或者实现接口
  • 编写相应事件的方法体,先简单输出测试
面板设置
  • 选定某个物体,然后Component——Event——EventTrigger组件
  • 然后Add New Event Type 选择想要的事件类型
  • 然后在脚本里面写相应的方法,最后将脚本拖拽到function中
通过拖拽事件改变图片位置
RectTransformUtility.
ScreenPointToWorldPointInRectangle(//将屏幕坐标点转换为世界坐标点
m_RectTransform,  // 游戏物体的rectTransform
eventData.position,  // 当前鼠标坐标位置点
eventData.enterEventCamera,  // 事件摄像机
out pos) // 最终计算得到的世界坐标位置
  • 我们只需要写在拖拽中事件方法内,将最终的pos位置值持续赋值给当前游戏物体的position即可
  • 面板中上的函数获取的是BaseEventData 指针事件数据,需要强制转换
注意事项
  • 有一点需要注意,他会将图片的中心点位置和鼠标的中心点位置重合,如果想实现实时拖拽
  • 偏移量 = 拖拽物品的位置 — 鼠标的位置
  • 然后在鼠标拖拽过程中, 持续执行
  • 拖拽物品的位置 = 鼠标位置 + 偏移量. 对其进行赋值即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值