首页 > 其他分享 >Unity UGUI的Physics2DRaycaster (2D物理射线检测)组件的介绍及使用

Unity UGUI的Physics2DRaycaster (2D物理射线检测)组件的介绍及使用

时间:2023-07-28 10:32:48浏览次数:44  
标签:UnityEngine 元素 element 2D Unity UI UGUI Mouse public

Unity UGUI的Physics2DRaycaster (2D物理射线检测)组件的介绍及使用

一、什么是Physics2DRaycaster组件?

Physics2DRaycaster是Unity中的一个UGUI组件,用于在2D场景中进行物理射线检测。它可以检测鼠标或触摸事件在UI元素上的碰撞,并将事件传递给相应的UI元素。

二、Physics2DRaycaster的工作原理

Physics2DRaycaster通过发射一条射线来检测UI元素的碰撞。当射线与UI元素相交时,Physics2DRaycaster会将事件传递给相应的UI元素,使其能够响应用户的输入。

三、Physics2DRaycaster的常用属性

1. Event Mask

Event Mask属性用于指定哪些层的UI元素可以接收事件。只有被选中的层上的UI元素才能接收到射线检测的事件。

2. Blocking Objects

Blocking Objects属性用于指定哪些类型的物体会阻挡射线的检测。可以选择使用2D物理系统中的Collider2D组件或者使用UI元素的Raycast Target属性来进行阻挡。

四、Physics2DRaycaster的常用函数

1. Raycast

Raycast函数用于执行射线检测。它接受一个RaycastResult类型的列表作为参数,并将检测到的UI元素的信息存储在列表中。

2. Sort

Sort函数用于对射线检测结果进行排序。可以根据UI元素的距离、层级等属性进行排序。

五、完整例子代码

1. 检测鼠标点击UI元素

using UnityEngine;
using UnityEngine.EventSystems;

public class MouseClickExample : MonoBehaviour, IPointerClickHandler
{
    public void OnPointerClick(PointerEventData eventData)
    {
        Debug.Log("Mouse clicked on UI element");
    }
}

操作步骤:

  1. 创建一个UI元素(例如Button)。
  2. 将MouseClickExample脚本附加到UI元素上。
  3. 点击运行游戏,点击UI元素,控制台将输出"Mouse clicked on UI element"。

注意事项:

  • 确保UI元素的Raycast Target属性被勾选。

2. 检测触摸事件

using UnityEngine;
using UnityEngine.EventSystems;

public class TouchExample : MonoBehaviour, IPointerDownHandler
{
    public void OnPointerDown(PointerEventData eventData)
    {
        Debug.Log("Touch event on UI element");
    }
}

操作步骤:

  1. 创建一个UI元素(例如Image)。
  2. 将TouchExample脚本附加到UI元素上。
  3. 点击运行游戏,在UI元素上触摸屏幕,控制台将输出"Touch event on UI element"。

注意事项:

  • 确保UI元素的Raycast Target属性被勾选。

3. 检测鼠标悬停事件

using UnityEngine;
using UnityEngine.EventSystems;

public class MouseHoverExample : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
    public void OnPointerEnter(PointerEventData eventData)
    {
        Debug.Log("Mouse entered UI element");
    }

    public void OnPointerExit(PointerEventData eventData)
    {
        Debug.Log("Mouse exited UI element");
    }
}

操作步骤:

  1. 创建一个UI元素(例如Text)。
  2. 将MouseHoverExample脚本附加到UI元素上。
  3. 点击运行游戏,将鼠标悬停在UI元素上,控制台将输出"Mouse entered UI element"。将鼠标移出UI元素,控制台将输出"Mouse exited UI element"。

注意事项:

  • 确保UI元素的Raycast Target属性被勾选。

4. 检测鼠标拖拽事件

using UnityEngine;
using UnityEngine.EventSystems;

public class MouseDragExample : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
    public void OnBeginDrag(PointerEventData eventData)
    {
        Debug.Log("Mouse drag started on UI element");
    }

    public void OnDrag(PointerEventData eventData)
    {
        Debug.Log("Mouse dragging on UI element");
    }

    public void OnEndDrag(PointerEventData eventData)
    {
        Debug.Log("Mouse drag ended on UI element");
    }
}

操作步骤:

  1. 创建一个UI元素(例如Image)。
  2. 将MouseDragExample脚本附加到UI元素上。
  3. 点击运行游戏,按住鼠标左键在UI元素上拖拽,控制台将输出"Mouse drag started on UI element"。拖拽过程中,控制台将输出"Mouse dragging on UI element"。释放鼠标左键,控制台将输出"Mouse drag ended on UI element"。

注意事项:

  • 确保UI元素的Raycast Target属性被勾选。

5. 检测鼠标滚轮事件

using UnityEngine;
using UnityEngine.EventSystems;

public class MouseScrollExample : MonoBehaviour, IScrollHandler
{
    public void OnScroll(PointerEventData eventData)
    {
        float scrollDelta = eventData.scrollDelta.y;
        Debug.Log("Mouse scrolled on UI element: " + scrollDelta);
    }
}

操作步骤:

  1. 创建一个UI元素(例如Scrollbar)。
  2. 将MouseScrollExample脚本附加到UI元素上。
  3. 点击运行游戏,滚动鼠标滚轮,控制台将输出"Mouse scrolled on UI element: ",并显示滚动的数值。

注意事项:

  • 确保UI元素的Raycast Target属性被勾选。

参考资料

标签:UnityEngine,元素,element,2D,Unity,UI,UGUI,Mouse,public
From: https://blog.51cto.com/u_7509448/6879075

相关文章

  • Unity UGUI的PhysicsRaycaster (物理射线检测)组件的介绍及使用
    UnityUGUI的PhysicsRaycaster(物理射线检测)组件的介绍及使用1.什么是PhysicsRaycaster组件?PhysicsRaycaster是UnityUGUI中的一个组件,用于在UI元素上进行物理射线检测。它可以检测鼠标或触摸事件是否发生在UI元素上,并将事件传递给相应的UI元素。2.PhysicsRaycaster的工作......
  • 远场距离除了10λ和2D^2/λ还有别的吗?
    远场距离始终是OTA测试中让大家头疼的一个因素。上一篇我们讨论了关于TRP的测试,为什么可以不用远场距离而使用更小的测试距离。但对于EIRP或其他方向性的测试项,却只能使用远场距离来进行。关于远场距离,我们曾经发过一篇文章,远场距离是10λ还是2D^2/λ,最近又有了一些新的发现,与大......
  • Unity下如何实现低延迟的全景RTMP|RTSP流渲染
    技术背景Unity3D可以用于创建各种类型的的应用程序,包括虚拟现实、培训模拟器等。以下是一些可以使用Unity3D全景播放的场景:虚拟现实体验:全景视频可以用来创建逼真的虚拟环境,使用户能够感受到身临其境的感觉;培训模拟器:全景视频可以用来创建真实的训练环境,例如飞行模拟器、驾驶模拟器......
  • Unity中查找物体
    最清晰的Unity查找物体的几种方法及优缺点详解!其他教程有很多没注意的地方,请看这里!_heliocentricism的博客-CSDN博客 ......
  • ugui源码阅读 - Graphic渲染原理
    3d部分使用MeshRenderer来渲染,ugui的使用CanvasRenderer来进行渲染。把顶点,材质,贴图设置给CanvasRenderer,就能渲染出来了。 下面的代码,我们直接使用CanvasRenderer来进行渲染,等同于Graphic渲染部分的核心代码。usingUnityEngine;usingUnityEngine.UI;[RequireComponent(......
  • nn.MaxPool2d()、transpose().contiguous()、view()说明
    1.nn.MaxPool2d()和nn.Conv2D()基本一样,但是stride默认值是kernel_size。2.transpose().contiguous()、view()contiguous一般与transpose,permute,view搭配使用:使用transpose或permute进行维度变换后,调用contiguous,然后方可使用view对维度进行变形print(x.shape)x=x.transpos......
  • nn.Conv2d()参数说明、输入输出
    1.参数说明2.输入输出参数计算若没有设置dilation:......
  • Unity UGUI的EventSystem(事件系统)组件的介绍及使用
    UnityUGUI的EventSystem(事件系统)组件的介绍及使用1.什么是EventSystem组件?EventSystem是UnityUGUI中的一个重要组件,用于处理用户输入事件,如点击、拖拽、滚动等。它负责将用户输入事件传递给合适的UI元素,并触发相应的事件回调函数。2.EventSystem组件的工作原理EventSystem......
  • kernel-pwn之ret2dir利用技巧
    前言ret2dir是2014年在USENIX发表的一篇论文,该论文提出针对ret2usr提出的SMEP、SMAP等保护的绕过。全称为return-to-direct-mappedmemory,返回直接映射的内存。ret2dir在SMEP与SMAP等用于隔离用户与内核空间的保护出现时,内核中常用的利用手法是ret2usr,如下图所示(图片来自论文)。......
  • visual studio community 2017 许可证即将过期
     打开发现通知,许可证即将过期点击后如图所示发现点击更新后根本没用,打不开其内容,看了数个文章,尝试后发现这是只需要关闭wifi(PS:比如校园网等),打开使用自己的热点进行连接即可进去加载页面然后根据提示进行简单操作即可,我使qq邮箱登录的社区版,这样微软直接给你发个qq邮箱验......