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