IsPointerOverGameObject:
判断鼠标或者手指是否悬停在UI上。
注意:
1.默认参数为-1,为鼠标,如果想判断手指的话,需要入参为fingerId
2.如果场景中添加了PhysicsRaycaster这个组件的话,那么3D对象也可以被检测到
EventSystem.current.IsPointerOverGameObject();
currentSelectedGameObject
获取到被点击的UI的信息
注意:需要点击到button等有点击事件的对象,image无法获取到点击事件
EventSystem.current.currentSelectedGameObject
射线检测UI方式一:
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);
射线检测UI方式二:
using UnityEngine.EventSystems;
using UnityEngine.UI;
public GraphicRaycaster graphicRaycaster;
// 代码逻辑
PointerEventData eventDataCurrentPosition = new PointerEventData(EventSystem.current);
eventDataCurrentPosition.position = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
List<RaycastResult> results = new List<RaycastResult>();
graphicRaycaster.Raycast(eventDataCurrentPosition, results);
射线检测对象:
float maxDistance = 1000;
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit, maxDistance, LayerMask.GetMask("需要检测的层级")))
{
// 执行检测到对象后需要执行的逻辑
}
版权声明:本文为qq_33808037原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。