热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

实现UGUI事件监听的三种方式_(拖拽、代码、接口)

1、拖拽最简单的方式,在UI组件**OnClick()**拖拽游戏物体~选择方法另一种方式添加EventTrigger组件,选择UI事件,

1、拖拽


  • 最简单的方式 ,在UI组件**On Click()**拖拽游戏物体~选择方法
  • 另一种方式添加Event Trigger组件,选择UI事件,拖拽游戏物体,选择方法

2、代码添加

首先脚本挂在空物体上,代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System;public class UIEvent : MonoBehaviour
{public GameObject btnGo;public GameObject sliderGo;public GameObject dropDownGo;// Start is called before the first frame updatevoid Start(){btnGo.GetComponent<Button>().onClick.AddListener(this.ButtonOnClick);btnGo.GetComponent<Slider>().onValueChanged.AddListener(this.SliderOnClick);btnGo.GetComponent<Dropdown>().onValueChanged.AddListener(this.DropDownOnClick);}void ButtonOnClick(){Debug.Log("ButtonOnClick");}void SliderOnClick(float value){Debug.Log("SliderOnClick");}void DropDownOnClick(Int32 value){Debug.Log("DropDownOnClick");}// Update is called once per framevoid Update(){}
}

然后指定一个Button&#xff0c;点击按钮就会执行代码中方法


3、通过实现接口


这些接口可以通过API~Scripting-Event System-Supported Events来进行查找_仅限于UGUI

有些接口是依赖于其他接口存在的&#xff0c;如果不执行事件函数&#xff0c;可能是没有实现其依赖的接口&#xff0c;如&#xff1a;要想执行IDragHandler接口的事件函数&#xff0c;必须实现IDragHandler接口

1、//进入该区域时调用
IPointerEnterHandler
2、//离开该区域是调用
IPointerExitHandler
3、//按下时调用
IPointerDownHandler
4、//抬起时调用
IPointerUpHandler
5、//按下并抬起时调用&#xff0c;例如按钮的点击
IPointerClickHandler
6、//拖动开始时调用&#xff0c;并且可以取到拖动的方向
IBeginDragHandler
7、//当发生拖动时调用拖动对象
IDragHandler
8、//在拖动完成时调用拖动对象
IEndDragHandler
9、//在拖动完成的对象上调用
IDropHandler
10、//当鼠标滚轮滚动时调用
IScrollHandler
11、//当对象成为选定对象时调用&#xff0c;只针对Selectable起作用
ISelectHandler
12、//取消选择&#xff0c;由于只能选择一个Selectable&#xff0c;当选择新的后&#xff0c;之前的选择就会回调取消选择事件
IDeselectHandler
13、//选择后&#xff0c;可监听上下左右、WSAD方向键。如果访问eventData.moveDir&#xff0c;可以取到具体移动的方向
IMoveHandler
14、//当按下提交按钮时调用
ISubmitHandler
15、//当按下取消按钮时调用
ICancelHandler
16、//在找到拖动目标时调用&#xff0c;可用于初始化值&#xff08;拖动初始化&#xff0c;只表示滑动初始化&#xff0c;无法取到方向&#xff09;
IInitializePotentialDragHandler
17、//选择时连续调用&#xff0c;只针对Selectable起作用
IUpdateSelectedHandler


以下是示例&#xff1a;

对于Image来说是没办法通过前两种方式对事件进行监听的&#xff0c;那么这时候就只有通过接口来实现
先创建一个Image&#xff0c;再添加一个脚本组件

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;public class UIEventManager : MonoBehaviour, IPointerDownHandler
{//实现的接口 鼠标点击Image会触发//要确保Image组件里的Raycast Target被勾选//因为这种方法是通过射线检测来实现的public void OnPointerDown(PointerEventData eventData){Debug.Log("IPointerDownHandler");}
}

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
/** UI必须有继承自Selectable组件的组件*/
public class ImageII : MonoBehaviour,ISelectHandler,IDeselectHandler,IUpdateSelectedHandler
{public void OnSelect(BaseEventData eventData){print("UI被选中了");}public void OnDeselect(BaseEventData eventData){print("UI被结束选中");}public void OnUpdateSelected(BaseEventData eventData){print("选中之后被结束选中之前一直被调用");}
}

附加&#xff1a;UI事件管理


推荐阅读
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 在编译 PHP7 的 PDO MySQL 扩展时,可能会遇到 `[mysql_driver.lo]` 错误 1。该问题通常出现在 `pdo_mysql_fetch_error_func` 函数中。本文详细介绍了导致这一错误的常见原因,包括依赖库版本不匹配、编译选项设置不当等,并提供了具体的解决步骤和调试方法,帮助开发者快速定位并解决问题。 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 本指南介绍了如何在ASP.NET Web应用程序中利用C#和JavaScript实现基于指纹识别的登录系统。通过集成指纹识别技术,用户无需输入传统的登录ID即可完成身份验证,从而提升用户体验和安全性。我们将详细探讨如何配置和部署这一功能,确保系统的稳定性和可靠性。 ... [详细]
  • 本文深入解析了WCF Binding模型中的绑定元素,详细介绍了信道、信道管理器、信道监听器和信道工厂的概念与作用。从对象创建的角度来看,信道管理器负责信道的生成。具体而言,客户端的信道通过信道工厂进行实例化,而服务端则通过信道监听器来接收请求。文章还探讨了这些组件之间的交互机制及其在WCF通信中的重要性。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • POJ 2482 星空中的星星:利用线段树与扫描线算法解决
    在《POJ 2482 星空中的星星》问题中,通过运用线段树和扫描线算法,可以高效地解决星星在窗口内的计数问题。该方法不仅能够快速处理大规模数据,还能确保时间复杂度的最优性,适用于各种复杂的星空模拟场景。 ... [详细]
  • 本文将继续探讨 JavaScript 函数式编程的高级技巧及其实际应用。通过一个具体的寻路算法示例,我们将深入分析如何利用函数式编程的思想解决复杂问题。示例中,节点之间的连线代表路径,连线上的数字表示两点间的距离。我们将详细讲解如何通过递归和高阶函数等技术实现高效的寻路算法。 ... [详细]
  • 本文详细介绍了一种利用 ESP8266 01S 模块构建 Web 服务器的成功实践方案。通过具体的代码示例和详细的步骤说明,帮助读者快速掌握该模块的使用方法。在疫情期间,作者重新审视并研究了这一未被充分利用的模块,最终成功实现了 Web 服务器的功能。本文不仅提供了完整的代码实现,还涵盖了调试过程中遇到的常见问题及其解决方法,为初学者提供了宝贵的参考。 ... [详细]
  • 提升视觉效果:Unity3D中的HDR与Bloom技术(高动态范围成像与光线散射)
    提升视觉效果:Unity3D中的HDR与Bloom技术(高动态范围成像与光线散射) ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 在使用 Qt 进行 YUV420 图像渲染时,由于 Qt 本身不支持直接绘制 YUV 数据,因此需要借助 QOpenGLWidget 和 OpenGL 技术来实现。通过继承 QOpenGLWidget 类并重写其绘图方法,可以利用 GPU 的高效渲染能力,实现高质量的 YUV420 图像显示。此外,这种方法还能显著提高图像处理的性能和流畅性。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
author-avatar
小秋学长
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有