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