unity 鼠标点击在2D 物体上 和UI上
1.鼠标是否点击在2D 物体上
/// <summary>
/// 点击屏幕坐标
/// </summary>
/// <param name="position"></param>
/// <returns></returns>
public bool IsClickOn2DEntity(Vector2 position)
{
RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
if (hit.collider != null && hit.collider.name==ZumaBgCircleBgName)
{
Debug.Log("Target" + hit.collider.name);
return true;
}
return false;
}
2.鼠标点击在UI上
/// <summary>
/// 获取鼠标停留处UI
/// </summary>
/// <param name="canvas"></param>
/// <returns></returns>
public bool IsClickOverUI(GameObject canvas)
{
PointerEventData pointerEventData = new PointerEventData(EventSystem.current);
pointerEventData.position = Input.mousePosition;
GraphicRaycaster gr = canvas.GetComponent<GraphicRaycaster>();
List<RaycastResult> results = new List<RaycastResult>();
gr.Raycast(pointerEventData, results);
if (results.Count != 0)
{
// Debug.Log(results[0].gameObject.name);
return true;
}
return false;
}