Unity给UI元素物体添加操作响应事件
可以给自定义物体如图片等添加响应事件
引入命名空间
using UnityEngine.EventSystems;
类中继承接口
IPointerDownHandler
实现接口
public void OnPointerDown(PointerEventData eventData) { 自定义处理代码 }
更多接口
IPointerDownHandler 接口,可响应鼠标在自身碰撞体范围内按下事件 需要实现 void OnPointerDown(PointerEventData eventData) 方法. IPointerUpHandler 接口,可响应鼠标在自身碰撞体范围内松开事件 需要实现 void OnPointerUp(PointerEventData eventData) 方法. IPointerClickHandler 接口,可响应鼠标在自身碰撞体范围内点击事件,什么叫点击呢,就是你在碰撞体范围内按下了,然后又在范围内松开了,这中间是可以移动的,哪怕你移出范围了,只要你松开的时候回来就算. 需要实现 void OnPointerClick(PointerEventData eventData) 方法. IPointerEnterHandler 接口,可响应鼠标进入自身碰撞体范围事件 需要实现 void OnPointerEnter(PointerEventData eventData) 方法. IPointerExitHandler 接口,可响应鼠标离开自身碰撞体范围事件 需要实现 void OnPointerExit(PointerEventData eventData) 方法. IPointerMoveHandler 接口,可响应鼠标在自身碰撞体范围内移动事件 需要实现 void OnPointerMove(PointerEventData eventData) 方法. IScrollHandler接口,可响应鼠标在自身碰撞体范围内滑动滚轮事件 需要实现 void OnScroll(PointerEventData eventData) 方法. 作者:白白_可乐 https://www.bilibili.com/read/cv18219864/ 出处:bilibili
接下来是拖拽相关的: IDragHandler 接口,在事件系统的拖拽相关中,这是个比较关键的接口,虽然只 需要实现void OnDrag(PointerEventData eventData)方法 但是其他的几个接口在没有他的情况下是不完整(或者不工作的),这个方法响应的是拖拽事件,那么所谓拖拽事件,就是鼠标按住不放的情况下移动了,在移动的每一帧都会触发拖拽事件,你按着不动了就暂停触发,继续动继续触发,松开就停止触发. IInitializePotentialDragHandler接口,检测当前脚本是否实现了前面那个IDragHandler接口,如果脚本有IDragHandler接口的话,在你按下鼠标之后触发本接口(触发时机是晚于IPointerDownHandler) 需要实现void OnInitializePotentialDrag(PointerEventData eventData)方法 IBeginDragHandler接口,当拖拽开始时触发,即按下鼠标开始移动的时候,按着不触发,动的那一帧触发,如果脚本没有实现IDragHandler接口的话不会触发. 需要实现void OnBeginDrag(PointerEventData eventData) 方法. IEndDragHandler接口,当拖拽结束时触发,松开就是结束. 需要实现void OnEndDrag(PointerEventData eventData) 方法. IDropHandler接口,既然有拖拽,那么就自然有放置,当你正在拖拽时,如果在实现该接口的物体的碰撞体范围内松开,就会触发该接口,触发时机早于IEndDragHandler接口. 需要实现void OnDrop(PointerEventData eventData) 方法. 作者:白白_可乐 https://www.bilibili.com/read/cv18219864/ 出处:bilibili