经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 软件/图像 » unity » 查看文章
Unity UGUI的PointerEventData的介绍及使用
来源:cnblogs  作者:AlianBlank  时间:2023/7/28 8:49:28  对本文有异议

Unity UGUI的PointerEventData的介绍及使用

1. 什么是PointerEventData?

PointerEventData是Unity中UGUI系统中的一个重要组件,用于处理用户输入的指针事件。它可以获取用户的点击、拖拽、滚动等操作,并提供了一系列的属性和函数来处理这些事件。

2. PointerEventData的工作原理

PointerEventData通过封装底层的输入系统,将用户的输入事件转化为Unity中的事件。它可以获取用户的点击位置、点击类型、点击对象等信息,并将这些信息传递给相应的事件处理函数。

3. PointerEventData的常用属性

  • position:获取用户点击的屏幕坐标。
  • delta:获取用户拖拽的位移量。
  • button:获取用户点击的鼠标按钮。
  • clickCount:获取用户点击的次数。
  • pointerEnter:获取鼠标指针所在的UI对象。

4. PointerEventData的常用函数

  • GetPress():判断鼠标按钮是否按下。
  • GetPressDown():判断鼠标按钮是否刚刚按下。
  • GetPressUp():判断鼠标按钮是否刚刚抬起。
  • IsPointerMoving():判断鼠标指针是否在移动。
  • IsPointerOverGameObject():判断鼠标指针是否在UI对象上。

5. 完整例子代码

例子1:获取鼠标点击位置

  1. using UnityEngine;
  2. using UnityEngine.EventSystems;
  3. public class ClickPosition : MonoBehaviour, IPointerClickHandler
  4. {
  5. public void OnPointerClick(PointerEventData eventData)
  6. {
  7. Debug.Log("点击位置:" + eventData.position);
  8. }
  9. }

操作步骤:

  1. 创建一个空物体,并将脚本挂载到该物体上。
  2. 在场景中点击鼠标,查看控制台输出的点击位置。

注意事项:

  • 需要将脚本挂载到有Collider组件的物体上,以便接收鼠标点击事件。

例子2:判断鼠标按钮是否按下

  1. using UnityEngine;
  2. using UnityEngine.EventSystems;
  3. public class ButtonPress : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
  4. {
  5. public void OnPointerDown(PointerEventData eventData)
  6. {
  7. Debug.Log("鼠标按钮按下");
  8. }
  9. public void OnPointerUp(PointerEventData eventData)
  10. {
  11. Debug.Log("鼠标按钮抬起");
  12. }
  13. }

操作步骤:

  1. 创建一个按钮,并将脚本挂载到该按钮上。
  2. 按下和抬起鼠标按钮,查看控制台输出。

注意事项:

  • 需要将脚本挂载到Button组件上,以便接收鼠标按钮事件。

例子3:获取鼠标拖拽位移

  1. using UnityEngine;
  2. using UnityEngine.EventSystems;
  3. public class DragPosition : MonoBehaviour, IDragHandler
  4. {
  5. public void OnDrag(PointerEventData eventData)
  6. {
  7. Debug.Log("拖拽位移:" + eventData.delta);
  8. }
  9. }

操作步骤:

  1. 创建一个物体,并将脚本挂载到该物体上。
  2. 按住鼠标左键拖拽物体,查看控制台输出的拖拽位移。

注意事项:

  • 需要将脚本挂载到有Collider组件的物体上,以便接收鼠标拖拽事件。

例子4:判断鼠标指针是否在UI对象上

  1. using UnityEngine;
  2. using UnityEngine.EventSystems;
  3. public class PointerOverUI : MonoBehaviour
  4. {
  5. public void Update()
  6. {
  7. if (EventSystem.current.IsPointerOverGameObject())
  8. {
  9. Debug.Log("鼠标指针在UI对象上");
  10. }
  11. }
  12. }

操作步骤:

  1. 创建一个UI对象,并将脚本挂载到一个空物体上。
  2. 将鼠标指针移动到UI对象上,查看控制台输出。

注意事项:

  • 需要将脚本挂载到一个空物体上,并在Update函数中判断鼠标指针是否在UI对象上。

例子5:获取鼠标点击次数

  1. using UnityEngine;
  2. using UnityEngine.EventSystems;
  3. public class ClickCount : MonoBehaviour, IPointerClickHandler
  4. {
  5. public void OnPointerClick(PointerEventData eventData)
  6. {
  7. Debug.Log("点击次数:" + eventData.clickCount);
  8. }
  9. }

操作步骤:

  1. 创建一个按钮,并将脚本挂载到该按钮上。
  2. 连续点击按钮,查看控制台输出的点击次数。

注意事项:

  • 需要将脚本挂载到Button组件上,以便接收鼠标点击事件。

参考资料

原文链接:https://www.cnblogs.com/alianblank/p/17586057.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号