注册
|
登录
发帖
热搜
活动
交友
discuz
论坛
BBS
翼度工具
翼度网址导航
开发工具
Linux命令速查
网页设计配色表
在线制作icon
颜色代码选取器
翼度科技
»
论坛
›
编程开发
›
.net
›
查看内容
返回列表
发新帖
Unity UGUI的PhysicsRaycaster (物理射线检测)组件的介绍及使用
福源农业
福源农业
当前离线
积分
15
5
主题
5
帖子
15
积分
新手上路
新手上路, 积分 15, 距离下一级还需 35 积分
新手上路, 积分 15, 距离下一级还需 35 积分
积分
15
发消息
显示全部楼层
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<Image>();
}
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<RectTransform>();
}
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<Button>();
audioSource = GetComponent<AudioSource>();
audioSource.clip = soundClip;
}
public void OnPointerClick(PointerEventData eventData)
{
audioSource.Play();
}
}
复制代码
操作步骤
:
创建一个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<Button>();
}
public void OnPointerClick(PointerEventData eventData)
{
targetObject.SetActive(!targetObject.activeSelf);
}
}
复制代码
操作步骤
:
创建一个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<Button>();
}
public void OnPointerClick(PointerEventData eventData)
{
SceneManager.LoadScene(targetSceneName);
}
}
复制代码
操作步骤
:
创建一个Canvas对象,并在Canvas下创建一个Button对象。
将Button对象的PhysicsRaycaster组件的Event Mask属性设置为默认值。
在场景中创建一个需要切换到的目标场景,并将目标场景的名称拖拽到ButtonSceneSwitcher脚本的targetSceneName属性上。
将Button对象的ButtonSceneSwitcher脚本挂载到Button对象上。
运行游戏,点击Button对象,场景会切换到目标场景。
注意事项
:
需要在Canvas对象上添加一个Graphics Raycaster组件,以便PhysicsRaycaster能够工作。
参考资料
Unity官方文档:
PhysicsRaycaster
Unity官方论坛:
PhysicsRaycaster
本文作者:
Blank
本文链接:
版权声明:本博客所有文章除特别声明外,均采用
BY-NC-SA
许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角
【
推荐
】
一下。您的鼓励是博主的最大动力!
来源:
https://www.cnblogs.com/alianblank/archive/2023/07/28/17586869.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
上一篇:
zTree树的创建、多选、多选框信息回显附带zTree树官网地址
下一篇:
C# webapi 参数(AI)
发表于 2023-7-28 10:30:01
举报
回复
使用道具
分享
返回列表
发新帖
本版积分规则
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
快速回复
快速回复
返回顶部
返回顶部
返回列表
返回列表