Unity按钮事件冒泡

今天unity写程序时,我做了一个透明按钮,没图片,只绑了点击事件,把子对象文字组件也删了,空留一个透明按钮,此时运行时点击按钮是没有反应的,网上的教程说必须指定target graphic(目标图像)且该图像必须允许光线检测(raycast target),我并没有这么做,只是给button对象下放了一个panel子对象,运行,点击按钮,竟然成功了,百思不得其解,这不是没有指定panel为目标对象吗?后来想到了事件冒泡,果然是因为这个。

事件冒泡验证:

创建三个空对象,彼此包含,分别为爷爷》爸爸》儿子

爷爷绑定点击事件,

脚本

爸爸为空,

儿子挂载图像组件(默认开启光线检测)

运行,点击儿子图像,发现爷爷对象输出

证实子对象的事件会向父对象传递(冒泡)

如果我在爸爸处也设置一个点击事件,那么便会被爸爸拦截,不会传到爷爷那里了,只要事件被处理了,便不会继续往上传递

运行,实测如我所料

总结:
在UGUI中,事件(如点击事件)是从被点击的对象开始,向上逐级传递到父对象,直到找到一个注册了该事件的监听器为止。如果父对象注册了点击事件,而子对象没有注册,那么点击子对象时,事件会向上冒泡到父对象,并触发父对象的点击事件。
注意事项
事件冒泡:UGUI的事件会从子对象向上冒泡到父对象,直到找到一个处理该事件的对象为止。
阻止事件冒泡:如果你希望阻止事件冒泡,可以在子对象上注册事件并调用eventData.Use()方法。这会标记事件为已处理,防止它继续向上冒泡。

相关推荐
一隅论数智1 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
上海广测检测科技有限公司1 天前
智能平板出口巴西合规详解:Anatel射频、Inmetro电源/电池与LGPD数据合规叠加
经验分享
XiHongShi20161 天前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
爱吃苹果的日记本1 天前
离散数学第六课
学习·离散数学
FLJwu1 天前
存储与固件量产实战01:运动相机TF卡量产翻车实录!V30≠4K可用,90%OEM踩中的隐形售后坑
经验分享·数码相机·相机
AI职业加油站1 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
深圳老胡1 天前
STM32F407 控制 L6470 步进电机驱动 —— 控制过程简介
笔记·stm32·单片机·嵌入式硬件·代码规范
旖旎夜光1 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
xiaomu001231 天前
床垫选型的技术评估模型:结构、材料、卫生与检测四层口径
经验分享