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

Unity按钮事件冒泡

今天unity写程序时,我做了一个透明按钮,没图片,只绑了点击事件,把子对象文字组件也删了,空留一个透明按钮,此时运行时点击按钮是没有反应的,网上的教程说必须指定target graphic(目标图像)且该图像必须允许光线检测(raycast target),我并没有这么做,只是给button对象下放了一个panel子对象,运行,点击按钮,竟然成功了,百思不得其解,这不是没有指定panel为目标对象吗?后来想到了事件冒泡,果然是因为这个。
上述情况
事件冒泡验证:
创建三个空对象,彼此包含,分别为爷爷》爸爸》儿子
在这里插入图片描述
爷爷绑定点击事件,
在这里插入图片描述
脚本
在这里插入图片描述

爸爸为空,
在这里插入图片描述
儿子挂载图像组件(默认开启光线检测)
在这里插入图片描述
运行,点击儿子图像,发现爷爷对象输出
在这里插入图片描述
证实子对象的事件会向父对象传递(冒泡)

如果我在爸爸处也设置一个点击事件,那么便会被爸爸拦截,不会传到爷爷那里了,只要事件被处理了,便不会继续往上传递
在这里插入图片描述
运行,实测如我所料
在这里插入图片描述
总结:
在UGUI中,事件(如点击事件)是从被点击的对象开始,向上逐级传递到父对象,直到找到一个注册了该事件的监听器为止。如果父对象注册了点击事件,而子对象没有注册,那么点击子对象时,事件会向上冒泡到父对象,并触发父对象的点击事件。
注意事项
事件冒泡:UGUI的事件会从子对象向上冒泡到父对象,直到找到一个处理该事件的对象为止。
阻止事件冒泡:如果你希望阻止事件冒泡,可以在子对象上注册事件并调用eventData.Use()方法。这会标记事件为已处理,防止它继续向上冒泡。

http://www.xdnf.cn/news/5021.html

相关文章:

  • 20.java反序列化-对象的类自定义的readObject()方法
  • 【算法】:滑动窗口
  • C++八股 —— vector底层
  • OpenHarmony launcher开发——删除dock栏
  • MegaCLI Raid管理工具
  • 如何训练deepseek语言大模型
  • 数据结构(1)复杂度
  • QT事件介绍及实现字体放大缩小(滚轮)
  • LIMIT详解
  • 在一个FreeBSD的控制台,当移动鼠标时,就会有字符发生,这是怎么回事:35;62;18m35;60;
  • 【PhysUnits】3.2 SI 量纲 补充幂运算(dimension/mod.rs)
  • 低成本自动化改造的18个技术锚点深度解析
  • STM32-TIM定时中断(6)
  • MOS管的优缺点及应用
  • CMA认证对象?CMA评审依据,CMA认证好处
  • python打卡day20
  • C++ —— 类的嵌套和循环依赖问题
  • SCDN是什么?
  • 如何避免双击时触发单击事件
  • 自然语言处理 (NLP) 技术发展:从规则到大型语言模型的演进之路
  • C++ 引用传参机制
  • Oracle Fusion常用表
  • AD 绘制原理图--元件的放置
  • 大模型的实践应用39-Qwen3(72B)+langchain框架+MCP(大模型上下文协议)+RAG+传统算法等研发数学教学管理与成绩提升系统
  • 计算几何图形算法经典问题整理
  • 卡洛诗的“破”与“立”
  • RDD转换算子案例
  • 我的AD快捷键方案【留存】
  • C++ -- string
  • 裸机上的 printf:在无操作系统环境下构建 C 标准库