UGUI射线检测与普通物体检测

article/2025/10/16 11:24:11

UGUI物体检测与普通物体检测有所不同(UGUI射线检测已经被封装好):

1.Graphic Raycaster

主要用于UI上的射线检测,挂有这个组件的物体,必须要挂上Canvas这个组件(当挂上Graphic Raycaster时Canvas也会自动挂上)。

Ignore Reversed Graphics:是否忽略反方向的图形,如果为true,则表示图形正面展示时,会接收到射线检测;反面展示时,不会接收到射线检测;否则,正反面展示都会接收到射线检测

Blocking Objects:屏蔽指定类型的(物理)对象,使它们不参与射线检测。渲染模式不为ScreenSpaceOverlay时起作用。可选值为:
None:不屏蔽任何物理对象
Two D:屏蔽2D物理对象(即具有2D碰撞体的对象)
Three D:屏蔽3D物理对象(即具有3D碰撞体的对象)

All:屏蔽所有物体对象

Blockin Mask:使屏蔽对象中的指定层不参与射线检测。渲染模式不为ScreenSpaceOverlay时,且Blocking Objects不为None时起作用。
例如,Blocking Objects为2D,Blocking Mask为UI,指2D物理对象中是UI层的东西都不会接收射线检测,而2D物理对象中的其他层还是能接收射线检测

 

2.Physics Raycaster & Physics2D Raycaster

主要用于物理对象上的射线检测,挂有这个组件的物体,必须要挂上Camera这个组件(当挂上组件时Camera也会自动挂上)。当物体(2D或者3D物理对象)受到射线检测时,物体上的实现了事件接口的方法会被调用
Physics Raycaster :只会对3D物体对象产生影响,Camera的Projection,尽量选为Perspective(透视)模式
Physics2D Raycaster:只会对2D物体对象产生影响,Camera的Projection,尽量选为Orthography(正交)模式
EventMask:射线作用层,可以用来做事件屏蔽

 

此处为主要代码:

    //此处检测出UGUI物体代码
    bool CheckGuiRaycastObjects()
    {
        PointerEventData eventData = new PointerEventData(eventSystem);//与指针(鼠标/触摸)事件相关的事件负载。(PointerEventData)

        //指针位置
        eventData.pressPosition = Input.mousePosition;
        eventData.position = Input.mousePosition;//当前指针位置。

        List<RaycastResult> list = new List<RaycastResult>();
        graphicRaycaster.Raycast(eventData, list);//如同Physics.Raycast(ray, out hit)绑定相应的射线检测信息
        Debug.Log(list.Count);
        if (list.Count > 0)
        {
            foreach (RaycastResult result in list)
            {
                print(result.gameObject.name);//输出相应的Ui物体
            }
        }
        return list.Count > 0;
    }

    //此处检测全部为游戏物体
    void update_()
    {
        if (CheckGuiRaycastObjects()) return;
        Debug.Log(EventSystem.current.gameObject.name);

        //此处检测全部为游戏物体
        if (Input.GetMouseButtonDown(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            if (Physics.Raycast(ray, out hit))
            {
                print(hit.collider.gameObject.name);//输出游戏物体
            }
        }
    }

    //此处代码可以判断鼠标点击的是UI物体还是游戏物体
    //EventSystem.current.IsPointerOverGameObject()该函数如果是UI我替返回true不是返回false
    void jiance_wuti()
    {
        if (Input.GetMouseButtonDown(0) || (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began))
        {
            #if UNITY_ANDROID || UNITY_IPHONE
            if (EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))
            #else
            if (EventSystem.current.IsPointerOverGameObject())//判断是否鼠标点击到了游戏物体
            #endif
                print("当前触摸在UI上"+ EventSystem.current.IsPointerOverGameObject());
            else
                print("当前没有触摸在UI上"+EventSystem.current.IsPointerOverGameObject());
        }
    }
}

其实UGUI中的射线检测就是一些事件处理(一下几种是官方封装好的UI射线使用)

例如using UnityEngine.EventSystems;中的几个类

:IPointerEnterHandler, IPointerExitHandler, IBeginDragHandler, IDragHandler, IEndDragHandler

继承这几个接口然后实现相应的方法。

在这几个函数中有一个参数PointerEventData eventData可以实现射线检测。

例:

        eventData.pointerEnter.gameObject//获得鼠标下的物体
        eventData.pointerEnter.tag//获得鼠标下物体的tag

另外几个函数均含有该参数(类似操作)

*****此处报错为变量单独一行导致

另外注意:

此处勾选方可检测到。再者注意层的关系

若想更加好的了解请下载本项目:

https://download.csdn.net/download/mengchenliuguang/10575369

项目运行关键:

 

运行结果(成功):

更加深入了解请参考此处几个网站信息:

http://www.cnblogs.com/fly-100/p/4570366.html

http://lib.csdn.net/article/unity3d/38681


http://chatgpt.dhexx.cn/article/3T9Ved3b.shtml

相关文章

多物体检测 RCNN

基于R-CNN的物体检测 原文地址&#xff1a;http://blog.csdn.net/hjimce/article/details/50187029 作者&#xff1a;hjimce 一、相关理论 本篇博文主要讲解2014年CVPR上的经典paper&#xff1a;《Rich feature hierarchies for Accurate Object Detection and Segmentation》…

自动驾驶感知——激光雷达物体检测算法

文章目录 1. 基于激光雷达的物体检测1.1 物体检测的输入与输出1.2 点云数据库1.3 激光雷达物体检测算法1.3.1 点视图1.3.1.1 PointNet1.3.1.2 PointNet1.3.1.3 Point-RCNN1.3.1.4 3D-SSD1.3.1.5 总结和对比 1.3.2 俯视图1.3.2.1 VoxelNet1.3.2.2 SECOND1.3.2.3 PIXOR1.3.2.4 AF…

物体检测之YOLO系列

业界对于目标检测的热度只增不减&#xff0c;但目前的框架也难于逾越RCNN系列、SSD、YOLO系列这三座大山&#xff0c;很多新的方法也是在此基础上做一些改进&#xff0c;所以有必要做一些整理&#xff0c;方便自己后续查看&#xff0c;这里先对YOLO系列做一些整理。没看过文章的…

物体检测难点 (多尺度检测, 遮挡与拥挤)

目录 多尺度检测降低下采样率与空洞卷积Anchor 设计多尺度训练 (Multi Scale Training&#xff0c;MST)特征融合尺度归一化: SNIP (Scale Normalization for Image Pyramids)Image Classification at Multiple ScalesData Variation or Correct Scale?Object Detection on an …

点云物体检测简介

点击上方“3D视觉工坊”&#xff0c;选择“星标” 干货第一时间送达 本文由知乎作者Leon Wu授权转载&#xff0c;不得擅自二次转载。原文链接&#xff1a;https://zhuanlan.zhihu.com/p/81474133 深度学习的开始 人类的大脑是一个神秘的器官&#xff0c;它由无数的神经细胞组成…

物体检测

计算机视觉中目标检测、跟踪、识别是最基本的几个task&#xff0c;尤其又以检测最为重要和基础。同时基本上所有的检测任务都需要在给出物体的bounding box之后&#xff0c;给出物体的类别&#xff08;也就是给识别物体&#xff09;&#xff0c;所以文章中不区分检测和识别任务…

实时3D物体检测

谷歌发布的MediaPipe Objectron&#xff0c;是一个可以实时检测3D物体检测的模型框架&#xff0c;先在2D图像上检测物体&#xff0c;然后估算出3D坐标。 尽管目前2D物体检测已经相对成熟&#xff0c;但3D检测仍然是个挑战性的问题&#xff0c;主要是缺少大量有效的数据用于训练…

物体检测实战:使用 OpenCV 进行 YOLO 对象检测

使用 OpenCV 进行 YOLO 对象检测 本文将教你如何使用YOLOV3对象检测器、OpenCV和Python实现对图像和视频流的检测。用到的文件有yolov3.weights、yolov3.cfg、coco.names&#xff0c;这三个文件的github链接如下&#xff1a; GitHub - pjreddie/darknet: Convolutional Neura…

传统物体检测

传统物体检测 1. 特征2. 模板匹配3. 颜色直方图4. 空间分拣5. 梯度特征6. HOG 特征7. 特征融合8. 搭建分类器8.1 数据标注8.2 数据预处理8.3 训练分类器8.4 交叉验证 9. 滑动窗口9.1 多尺度窗口9.2 Hog子采样窗口搜索(Hog Sub-sampling Window Search) 10. Multiple Detections…

计算机视觉之旅-进阶-物体检测

1. 物体检测概念 计算机视觉中的物体检测是指在图像中检测和定位特定目标对象,它是计算机视觉中一个基本而又重要的问题。 物体检测的目的就是在输入图像中检测所关心的目标对象,并给出其边界框和类别信息。典型的输出包括: - 边界框:表示目标对象在图像中的位置和大小。常用…

物体检测技术的简单介绍

1. 物体检测技术概念 物体检测技术&#xff0c;通常是指在一张图像中检测出物体出现的位置及对 应的类别&#xff0c;主要包括物体类别、 x m i n x_{min} xmin​、 y m i n y_{min} ymin​、 x m a x x_{max} xmax​与 y m a x y_{max} ymax​。它是一项非常基础的任 务&…

Opencv项目实战:05 物体检测

1,效果展示 为此,我专门还去查了查,怎么将视频转化为gif图,不知不觉中,我又多学会了一项技能。 OK!cool,效果很不错,今天需要搭配一些文件,都是可以从官网里找到的,那么我为了方便,专门去学习怎么在GitHub上托管项目,还下载了VScode和Git,我太难受了,如果不是要写…

百万youtube高清视频数据集采集

HD-VILA-100M是什么? HD-VILA-100M是一个大规模、高分辨率、多样化的视频语言数据集&#xff0c;有助于多模态表示学习。 数据统计 该数据集共包含330万个视频&#xff0c;视频质量较高&#xff0c;均衡分布在15个类别中。 下载&#xff08;Download&#xff09; 您可以通…

100多万个视频短片数据集来啦!

本文经授权转载自 IEEE电气电子工程师学会&#xff08;ID: IEEE_China&#xff09; 想象一下&#xff0c;如果我们必须向外星人解释地球上发生的所有行为。我们可以为他们提供非小说类书籍或BBC纪录片。我们可以尝试口头解释什么是电臀舞。但是&#xff0c;实际上&#xff0c;没…

大数据视频课程汇总

1.由于未经视频版权方授权&#xff0c;很可能会被下架&#xff0c;请各位需要的同仁及时下载&#xff0c;如果被下架&#xff0c;请留言说明。 2.视频为大数据梅峰谷整理&#xff0c;所有视频不加密&#xff0c;不收费&#xff0c;不做机构的宣传品&#xff0c;(因为微信和各大…

视频分类数据集介绍

视频分类数据集 在视频分类项目中&#xff0c;有很多经典的公开数据集&#xff0c;目前主要的数据集如列表所示&#xff1a; 重点介绍三个中等规模的数据集。 1. UCF101 动作识别数据集&#xff0c;从youtube收集而得&#xff0c;共包含101类动作。其中每类动作由25个人做动作…

Python毕业设计 抖音短视频数据分析与可视化 - python 大数据 可视化

文章目录 0 前言1 课题背景2 数据清洗3 数据可视化地区-用户观看时间分界线每周观看观看路径发布地点视频时长整体点赞、完播 4 进阶分析相关性分析留存率 5 深度分析客户价值判断 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕…

大数据分析视频全套

一、全套视频总览 二、大数据分析之level2 三、大数据分析之level3 四、大数据分析之level4 五、课程相关资料 具体详细内容及目录结构如下&#xff1a; 注&#xff1a; 大数据分析与大数据开发的区别在于&#xff1a;本套课程涵盖算法更多&#xff0c;需掌握python语言&#…

AI大数据可视化EasyCVR视频融合平台的部署操作流程详解

EasyCVR视频融合平台基于云边端一体化架构&#xff0c;具有强大的数据接入、处理及分发能力&#xff0c;平台支持海量视频汇聚管理&#xff0c;能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;实现视频直播、云端录像、云存储、…

音视频造数据的路

目录 1、多路数据制造 &#xff08;1&#xff09;合并多路 &#xff08;2&#xff09; 视频修改分辨率 &#xff08;3&#xff09; 修改视频码率 &#xff08;4&#xff09;修改帧率 2、音频流多声道合成 &#xff08;1&#xff09;双声道合并单声道 &#xff08;2&…