需求:有时候拖动/点击UI时,需要判断鼠标所在位置上,对重叠的UI进行分别的处理
实现:利用PointerEventData()
一;判断当前鼠标上重叠的UI有多少个
private int IsPointerOverUIObject()
{
PointerEventData eventDataCurrentPosition = new PointerEventData(EventSystem.current);
eventDataCurrentPosition.position = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
List<RaycastResult> results = new List<RaycastResult>();
EventSystem.current.RaycastAll(eventDataCurrentPosition, results);
return results.Count;
二:继承IPointerClickHandler接口(点击),实现OnPointerClick(PointerEventData eventData)方法,可用于触发点击位置上的全部UI,其他接口也类似这样
public void OnPointerClick(PointerEventData eventData)
{
PassEvent(eventData, ExecuteEvents.pointerClickHandler);