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

Unity按钮事件冒泡

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

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

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

http://www.dtcms.com/a/180240.html

相关文章:

  • 制作一款打飞机游戏42:敌人大脑
  • Unity3D实现Render Streaming推送视频流的解决方案
  • 【网络编程】四、守护进程实现 前后台作业 会话与进程组
  • 【强化学习】强化学习算法 - 马尔可夫决策过程
  • 可再生能源中的隔离栅极驱动器:光伏逆变器的游戏规则改变者
  • 数据防泄漏的解决方案
  • Java学习手册:单体架构到微服务演进
  • CSS vertical-align
  • SPN技术介绍
  • HunyuanCustom, 腾讯混元开源的多模态定制视频生成框架
  • RuntimeError: expected scalar type ComplexDouble but found Float
  • 经过多年发展,中国机械工业已经具备了独特的国际比较优势
  • 一文了解氨基酸的分类、代谢和应用
  • WorkManager与Kotlin后台任务调度指南
  • springboot 加载 tomcat 源码追踪
  • 《 指针变量的创建:初探内存世界的钥匙》
  • 水印云:AI赋能,让图像处理变得简单高效
  • zst-2001 历年真题 UML
  • Babylon.js学习之路《二、开发环境搭建与第一个Hello World》
  • 在Mac M1/M2上使用Hugging Face Transformers进行中文文本分类(完整指南)
  • JavaSE核心知识点02面向对象编程02-04(包和导入)
  • 【NCCL】DBT算法(double binary tree,双二叉树)
  • 工业设计破局密码:3D 可视化技术点燃产业升级引擎
  • 13.原生测试框架Unittest解决用例组织问题 与测试套件的使用
  • 多视图密集对应学习:细粒度3D分割的自监督革命
  • 【Axios】解决Axios下载二进制文件返回空对象的问题
  • MapReduce报错 HADOOP_HOME and hadoop.home.dir are unset.
  • 课程审核流程揭秘:确保内容合规与用户体验
  • 高频算法面试题总结
  • 【25软考网工】第六章 网络安全(1)网络安全基础