Unity按钮事件冒泡

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

事件冒泡验证:

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

爷爷绑定点击事件,

脚本

爸爸为空,

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

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

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

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

运行,实测如我所料

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

相关推荐
_Jyuan_1 小时前
镜头内常见的马达类型(私人笔记)
经验分享·笔记·数码相机
丰锋ff3 小时前
考研英一学习笔记 2018年
笔记·学习·考研
1296004523 小时前
pytorch基础的学习
人工智能·pytorch·学习
岂是尔等觊觎3 小时前
软件设计师教程——第一章 计算机系统知识(下)
经验分享·笔记·其他
Oll Correct3 小时前
计算机二级WPS Office第三套电子表格
笔记
睡不着还睡不醒3 小时前
【笔记】unsqueeze
笔记
VTheShow4 小时前
Unity Gizmos
unity
pq113_64 小时前
OrangePi Zero 3学习笔记(Android篇)4 - eudev编译(获取libudev.so)
android·笔记·学习
笨笨5615 小时前
SEMI E40-0200 STANDARD FOR PROCESSING MANAGEMENT(加工管理标准)-(二)
经验分享