是否点击在ui上:
public bool IsPointerOverUIObjectA() {
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 > 0;
}
点击有某个组件的UI上时返回:
Drag ret=null;
PointerEventData pointerEventData = new PointerEventData(EventSystem.current);
pointerEventData.position = Input.mousePosition;
List<RaycastResult> result = new List<RaycastResult>();
EventSystem.current.RaycastAll(pointerEventData, result);
for (int i = 0; i < result.Count; i++)
{
GameObject go = result[i].gameObject;
if (go == null)
continue;
Drag drag = go.GetComponent<Drag>();
if (drag == null)
continue;
ret = drag;
break;
}
return ret;