鼠标穿透UI元素解决

在用UGUI的时候遇到了鼠标穿透的问题,就是说在UGUI和3D场景混合的情况下,点击UI区域同时也会 触发3D中物体的鼠标事件。
这是比较笨的方法:

if (UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject())
            return;

好一点的方法

bool CheckGUIRaycastObjects() //检测
{
    PointerEventData data = new PointerEventData(m_EventSystem);//m_EventSystem是游戏中EventSystem对象的组件
    data.pressPosition = Input.mousePosition; //获取鼠标位置
    data.position = Input.mousePosition; //获取鼠标位置
    List<RaycastResult> result = new List<RaycastResult>();  //创建一个获得 RaycastResult的list
    m_Raycaster.Raycast(data, result); // m_Raycaster 是Canvas的组件
    return result.Count > 0; //判断射线碰撞的结果是否大于0,大于0则返回true,否则返回false

}
发布了58 篇原创文章 · 获赞 3 · 访问量 1949

猜你喜欢

转载自blog.csdn.net/qq_34343249/article/details/104956174