zoukankan      html  css  js  c++  java
  • Unity 获取鼠标悬停位置下的UI或3D物体对象

    根据UGUI的射线检测机制获取当前鼠标下的UI:

    /// <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;
    }
    其中,results为鼠标下UI的列表。
    
    不仅适用于UGUI,可以在摄像机上添加PhysicsRaycaster组件,传参为摄像机,这样就可以获取3D物体。
    /// <summary>
    /// 获取鼠标停留处物体
    /// </summary>
    /// <param name="raycaster"></param>
    /// <returns></returns>
    public GameObject GetOverGameObject(GameObject raycaster)
    {
    PointerEventData pointerEventData = new PointerEventData(EventSystem.current);
    pointerEventData.position = Input.mousePosition;
    PhysicsRaycaster pr = raycaster.GetComponent<PhysicsRaycaster>();
    List<RaycastResult> results = new List<RaycastResult>();
    pr.Raycast(pointerEventData, results);
    if (results.Count != 0)
    {
    return results[0].gameObject;
    }
    
    return null;
    }
  • 相关阅读:
    【前端面试】前端知识点总结_前端大厂车轮战_转自mahmud(小麦)大神
    【网优】浅谈LTE无线网络优化
    Java单体应用
    Java单体应用
    Java单体应用
    Java单体应用
    Java单体应用
    Java单体应用
    Java单体应用
    Java单体应用
  • 原文地址:https://www.cnblogs.com/yanghui0702/p/yanghui20181018.html
Copyright © 2011-2022 走看看