第一种 可以得到UI, 再根据名字判断是不是自己自己要点击的UI
其中参数canvas拖入此UI的canvas
/// <summary>
/// 获取鼠标停留处UI
/// </summary>
/// <param name="canvas"></param>
/// <returns></returns>
public GameObject GetOverUI(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)
{
return results[0].gameObject;
}
return null;
}
第二种就简单了,
rect 为要判断的那个UI的RectTransform
bool isUI = RectTransformUtility.RectangleContainsScreenPoint(rect, Input.mousePosition)
本文介绍了两种在Unity中实现UI交互检测的方法。第一种方法通过使用GraphicRaycaster组件和PointerEventData来获取鼠标悬停的UI元素。第二种方法利用RectTransformUtility的RectangleContainsScreenPoint函数检查指定UI元素是否包含鼠标位置。
4347

被折叠的 条评论
为什么被折叠?



