第一种
这个API android 平台不太好使
EventSystem.current.IsPointerOverGameObject()
if (EventSystem.current.IsPointerOverGameObject())
{
//上面有UI 执行UI的行为 不在执行下面的行为
return;
}
第二种
此种方法适用所有平台 可以检测出鼠标指针是否被UI遮挡
/// <summary>
/// 传入 Input.mousePosition
/// </summary>
/// <param name="screenPosition"></param>
/// <returns></returns>
public bool IsPointerOverGameObject(Vector2 screenPosition)
{
//实例化点击事件
PointerEventData eventDataCurrentPosition = new PointerEventData(UnityEngine.EventSystems.EventSystem.current);
//将点击位置的屏幕坐标赋值给点击事件
eventDataCurrentPosition.position = new Vector2(screenPosition.x, screenPosition.y);
List<RaycastResult> results = new List<RaycastResult>();
//向点击处发射射线
EventSystem.current.RaycastAll(eventDataCurrentPosition, results);
return results.Count > 0;
}