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

    /// <summary>
    /// 向指定UI对象发出射线,并返回射线触碰到了哪些UI对象
    /// </summary>
    /// <param name="canvas">当前canvas</param>
    /// <param name="rectTransform">向这个UI对象坐标发出射线</param>
    /// <returns></returns>
    static List<RaycastResult> GetRaycastResult(Canvas canvas, RectTransform rectTransform)
    {
        List<RaycastResult> raycastResults = new List<RaycastResult>();
        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;
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容