向指定UI对象发出射线,并返回射线触碰到了哪些UI对象

    /// 
    /// 向指定UI对象发出射线,并返回射线触碰到了哪些UI对象
    /// 
    /// 当前canvas
    /// 向这个UI对象坐标发出射线
    /// 
    static List GetRaycastResult(Canvas canvas, RectTransform rectTransform)
    {
        List raycastResults = new List();
        Vector3 screenPos = canvas.worldCamera.WorldToScreenPoint(rectTransform.position);

        PointerEventData eventData = new PointerEventData(EventSystem.current);
        eventData.position = new Vector2(screenPos.x, screenPos.y);
        EventSystem.current.RaycastAll(eventData, raycastResults);

        for (int i = 0; i < raycastResults.Count; i++)
        {
            Debug.Log($"射线碰到了UI对象:{raycastResults[i].gameObject.name}");
        }
        return raycastResults;
    }

你可能感兴趣的:(向指定UI对象发出射线,并返回射线触碰到了哪些UI对象)