当前位置: 首页>行业 >

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

来源: 博客园 | 时间: 2023-07-28 10:15:49 |

Unity UGUI的PhysicsRaycaster (物理射线检测)组件的介绍及使用1. 什么是PhysicsRaycaster组件?

PhysicsRaycaster是Unity UGUI中的一个组件,用于在UI元素上进行物理射线检测。它可以检测鼠标或触摸事件是否发生在UI元素上,并将事件传递给相应的UI元素。

2. PhysicsRaycaster的工作原理

PhysicsRaycaster通过发射一条射线来检测UI元素。当射线与UI元素相交时,PhysicsRaycaster会将事件传递给相应的UI元素。


【资料图】

3. PhysicsRaycaster的常用属性Event Mask:指定哪些层的UI元素可以接收事件。Max Raycast Distance:指定射线的最大检测距离。Blocking Objects:指定哪些类型的物体可以阻挡射线检测。4. PhysicsRaycaster的常用函数Raycast:发射一条射线并返回与之相交的UI元素。5. 完整例子代码例子1:点击按钮改变颜色
using UnityEngine;using UnityEngine.EventSystems;using UnityEngine.UI;public class ButtonColorChanger : MonoBehaviour, IPointerClickHandler{    private Image image;    private void Start()    {        image = GetComponent();    }    public void OnPointerClick(PointerEventData eventData)    {        image.color = Random.ColorHSV();    }}

操作步骤

创建一个Canvas对象,并在Canvas下创建一个Button对象。将Button对象的Image组件的Color属性设置为任意颜色。将Button对象的PhysicsRaycaster组件的Event Mask属性设置为默认值。将Button对象的ButtonColorChanger脚本挂载到Button对象上。运行游戏,点击Button对象,颜色会随机改变。

注意事项

需要在Canvas对象上添加一个Graphics Raycaster组件,以便PhysicsRaycaster能够工作。例子2:拖拽物体
using UnityEngine;using UnityEngine.EventSystems;public class ObjectDragger : MonoBehaviour, IPointerDownHandler, IDragHandler{    private RectTransform rectTransform;    private void Start()    {        rectTransform = GetComponent();    }    public void OnPointerDown(PointerEventData eventData)    {        rectTransform.SetAsLastSibling();    }    public void OnDrag(PointerEventData eventData)    {        rectTransform.anchoredPosition += eventData.delta;    }}

操作步骤

创建一个Canvas对象,并在Canvas下创建一个Image对象。将Image对象的PhysicsRaycaster组件的Event Mask属性设置为默认值。将Image对象的ObjectDragger脚本挂载到Image对象上。运行游戏,点击Image对象并拖动,Image对象会跟随鼠标或触摸移动。

注意事项

需要在Canvas对象上添加一个Graphics Raycaster组件,以便PhysicsRaycaster能够工作。例子3:点击按钮播放音效
using UnityEngine;using UnityEngine.EventSystems;using UnityEngine.UI;public class ButtonSoundPlayer : MonoBehaviour, IPointerClickHandler{    public AudioClip soundClip;    private Button button;    private AudioSource audioSource;    private void Start()    {        button = GetComponent

操作步骤

创建一个Canvas对象,并在Canvas下创建一个Button对象。将Button对象的PhysicsRaycaster组件的Event Mask属性设置为默认值。在场景中添加一个AudioSource对象,并将音效文件拖拽到ButtonSoundPlayer脚本的soundClip属性上。将Button对象的ButtonSoundPlayer脚本挂载到Button对象上。运行游戏,点击Button对象,音效会播放。

注意事项

需要在Canvas对象上添加一个Graphics Raycaster组件,以便PhysicsRaycaster能够工作。例子4:点击按钮显示/隐藏物体
using UnityEngine;using UnityEngine.EventSystems;using UnityEngine.UI;public class ButtonObjectToggler : MonoBehaviour, IPointerClickHandler{    public GameObject targetObject;    private Button button;    private void Start()    {        button = GetComponent

操作步骤

创建一个Canvas对象,并在Canvas下创建一个Button对象。将Button对象的PhysicsRaycaster组件的Event Mask属性设置为默认值。在场景中创建一个需要显示/隐藏的物体,并将该物体拖拽到ButtonObjectToggler脚本的targetObject属性上。将Button对象的ButtonObjectToggler脚本挂载到Button对象上。运行游戏,点击Button对象,物体会显示或隐藏。

注意事项

需要在Canvas对象上添加一个Graphics Raycaster组件,以便PhysicsRaycaster能够工作。例子5:点击按钮切换场景
using UnityEngine;using UnityEngine.EventSystems;using UnityEngine.SceneManagement;using UnityEngine.UI;public class ButtonSceneSwitcher : MonoBehaviour, IPointerClickHandler{    public string targetSceneName;    private Button button;    private void Start()    {        button = GetComponent

操作步骤

创建一个Canvas对象,并在Canvas下创建一个Button对象。将Button对象的PhysicsRaycaster组件的Event Mask属性设置为默认值。在场景中创建一个需要切换到的目标场景,并将目标场景的名称拖拽到ButtonSceneSwitcher脚本的targetSceneName属性上。将Button对象的ButtonSceneSwitcher脚本挂载到Button对象上。运行游戏,点击Button对象,场景会切换到目标场景。

注意事项

需要在Canvas对象上添加一个Graphics Raycaster组件,以便PhysicsRaycaster能够工作。参考资料Unity官方文档:PhysicsRaycasterUnity官方论坛:PhysicsRaycaster

关键词:

 

热文推荐

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

UnityUGUI的PhysicsRaycaster(物理射线检测)组件的介绍及使用 1 什么

2023-07-28

机警特刊㊶|平安理财多维度拓宽固收边界,“启元”系列打造多资产多策略固收类理财

南财理财通课题组成员:汤懿兰、丁尽勉、黄桂煊、薛茹云、陈子卉、卓晓

2023-07-28

翻轮胎、扛汽车!警界大力士挑战体能极限

180公斤重的轮胎两分钟之内翻动30余次,肩扛300公斤的车辆30秒行走29米

2023-07-28

Gartner发布《2023年应用安全技术成熟度曲线》, 威胁猎人是国内唯一入选的API安全品牌

近日,全球权威咨询和调研机构Gartner发布《2023年应用安全技术成熟度曲

2023-07-28

怎样鉴定墨玉原石

鉴定墨玉原石的方法可以包括以下几个方面:1 观察颜色和纹理:墨玉的颜

2023-07-28

上海浦东新区中部地区规模最大的租赁房小区已进入竣工验收阶段

近日由上海浦东开发(集团)有限公司投资建设、中国建筑第八工程局有限

2023-07-28

看哭了!全网最深情通知书 就在无锡!

每年夏天江苏无锡邮递员王惠南都奔波在送高考录取通知书的路上7月24日

2023-07-28

文明服务培训内容_文明服务

具体的不能给你,怕泄漏机密,提纲还是可以给你参考滴~银行优质文明服

2023-07-28

河北品牌农产品进京展销

河北品牌农产品进京展销

2023-07-28

上公厕有可能得猴痘吗?专家解答住酒店安全吗

国家疾控局、国家卫健委近日联合发布《猴痘防控方案》,要求各级各类医

2023-07-28

俄称打击乌机场,乌称继续展开进攻

00:52北京日报客户端当地时间7月27日,俄罗斯国防部通报称,俄军在过去

2023-07-28

这些老车主的20万公里传奇之旅,写就BJ40可靠耐用十周年

从腾格里、库尔勒、库布齐的沙漠,到乌兰布统的冰面,从丙察察、克里雅

2023-07-28

Primis Finl(FRST.US):2023年Q2财报实现营收3464.3万美元

PrimisFinl(FRST US):2023年Q2财报实现营收3464 3万美元,前值为2723

2023-07-28

太平洋建设集团公司简介_太平洋建设集团

1、太平洋建设以建设为主,有:公路、市政、水利等基础设施投资与建设

2023-07-28

分区表损坏会怎样(分区表损坏)

1、1、将硬盘里重要的资料转移到另一硬盘或U盘。2、难后再用PQ把硬盘所

2023-07-28

万科上半年新增货值位列前五 投资拿地、人事换防力求解压业绩

上半年,当同一阵营房企在公开土地市场激烈比拼、明争暗斗时,却少见万

2023-07-28

国家艺术基金资助项目儿童音乐剧《摇啊摇》 全国巡演启动

近日,由上海小顽家儿童戏剧制作出品的国家艺术基金2022年度传播交流推

2023-07-28

UWB超宽带板块7月27日跌1.58%,超讯通信领跌,主力资金净流出2.52亿元

7月27日UWB超宽带板块较上一交易日下跌1 58%,超讯通信领跌。当日上证

2023-07-28

洪森宣布卸任柬埔寨首相!

据《柬中时报》7月26日报道,柬埔寨首相洪森当天发表电视讲话时宣布,

2023-07-28

11大用户标签叠buff,「脉脉饱和式精准营销」助力企业深度触达人才

营销的苦和甜,在营销人眉头紧锁计算的ROI里,在企业营销费用的清单里

2023-07-28