当前位置: 首页 > news >正文

【Unity】UI点击事件处理器

目录

  • 前言
  • 脚本

前言

在开发过程中,经常需要监听UI的点击事件,这里我给大家整理一下,脚本直接挂在需要监听的节点上即可。

脚本

using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;namespace GameLogic
{/// <summary>/// Ui点击事件处理器/// </summary>public class UIEventHandler : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerClickHandler, IPointerUpHandler, IPointerDownHandler{UnityAction enterEvent;UnityAction exitEvent;UnityAction clickEvent;UnityAction downEvent;UnityAction upEvent;public void Init(){enterEvent = null;exitEvent = null;clickEvent = null;downEvent = null;upEvent = null;}/// <summary>/// 添加进入事件/// </summary>/// <param name="action"></param>public void AddEnterEvent(UnityAction action){enterEvent = action;}/// <summary>/// 添加离开事件/// </summary>/// <param name="action"></param>public void AddExitEvent(UnityAction action){exitEvent = action;}/// <summary>/// 添加点击事件/// </summary>/// <param name="action"></param>public void AddClickEvent(UnityAction action){clickEvent = action;}/// <summary>/// 添加按下事件/// </summary>/// <param name="action"></param>public void AddDownEvent(UnityAction action){downEvent = action;}/// <summary>/// 添加松开事件/// </summary>/// <param name="action"></param>public void AddUpEvent(UnityAction action){upEvent = action;}/// <summary>/// 进入范围触发/// </summary>/// <param name="eventdata"></param>public void OnPointerEnter(PointerEventData eventdata){//Debug.Log("===进入===");enterEvent?.Invoke();}/// <summary>/// 退出范围触发/// </summary>/// <param name="eventdata"></param>public void OnPointerExit(PointerEventData eventdata){//Debug.Log("===离开===");exitEvent?.Invoke();}/// <summary>/// 按下+松开才能触发(松开时需要在UI范围内,不然则不触发)/// </summary>/// <param name="eventdata"></param>public void OnPointerClick(PointerEventData eventdata){//Debug.Log("===点击===");clickEvent?.Invoke();}/// <summary>/// 按下触发/// </summary>/// <param name="eventdata"></param>public void OnPointerDown(PointerEventData eventdata){//Debug.Log("===按下===");downEvent?.Invoke();}/// <summary>/// 松开触发/// </summary>/// <param name="eventdata"></param>public void OnPointerUp(PointerEventData eventdata){//Debug.Log("===抬起===");upEvent?.Invoke();}}
}

相关文章:

  • CS144 Lab0实战记录:搭建网络编程基础
  • 【Leetcode 每日一题 - 补卡】1534. 统计好三元组
  • HBuilder安装PHP开发插件教程
  • 浔川AI翻译v7.0更新预告
  • 深度解析Spring @Scheduled:从基础使用到高级定制
  • Java反射知识点学习笔记
  • VS Code 安装及常用插件
  • 【计算机视觉】OpenCV实战项目-AdvancedLaneDetection 车道检测
  • NLP高频面试题(四十六)——Transformer 架构中的位置编码及其演化详解
  • RPCRT4!OSF_CCALL::ActivateCall函数分析之RPCRT4!OSF_CCALL结构中的Bindings--RPC源代码分析
  • 2025中国移动云智算大会回顾:云智变革,AI+跃迁
  • PHP开发环境搭建(Hbuider+phpstudy)
  • 数据通信学习笔记之OSPF配置命令
  • 知识图谱中医知识问答系统|养生医案综合可视化系|推荐算法|vue+flask+neo4j+mysql
  • MATLAB 程序实现了一个层次化光网络的数据传输模拟系统
  • 【Linux基础】sqlite数据库
  • 观察者模式与发布订阅模式:解耦与通信的艺术
  • SpringBoot 动态加载 Jar 包
  • 【c语言】深入理解指针2
  • Python 获取淘宝券后价接口的详细指南
  • 奔驰一季度利润降四成,受美国加征关税影响放弃全年盈利展望
  • 深观察丨从“不建议将导师挂名为第一作者”说开去
  • 新型算法助力听障人士听得更清晰
  • 深入贯彻中央八项规定精神学习教育中央指导组培训会议召开
  • 遭遇大规模停电,西班牙内政部宣布进入国家紧急状态
  • 俄外长与美国务卿通电话,讨论俄美关系及乌克兰问题