当前位置: 首页> 游戏> 评测 > android手机软件开发教程_ui网页设计排版_上海培训机构排名_最新新闻热点

android手机软件开发教程_ui网页设计排版_上海培训机构排名_最新新闻热点

时间:2025/7/10 4:41:26来源:https://blog.csdn.net/bo_self_effacing/article/details/146476610 浏览次数:0次
android手机软件开发教程_ui网页设计排版_上海培训机构排名_最新新闻热点

当我打开一个二级弹窗后,希望可以通过点击弹窗以外的区域来关闭该弹窗。一开始我是在弹窗主节点上挂载了一个 button 组件,该 button 注册的点击事件中关闭该弹窗。在子节点(一个背景图)的image组件上启用 Raycast Target 选项,希望拦截点击事件,使得该背景图区域不会触发关闭按钮的事件。但是实际表现上,在该区域仍然可以触发主节点上的 button 点击事件。
在这里插入图片描述
查了各种资料,加上各种尝试,发现了两种解决办法。
第一种方案,是主节点不用 button 来响应关闭事件,而是继承 IPointerClickHandler,重写 OnPointerClick 方法来响应点击事件,在响应函数中检查点击区域是否在子节点区域外,在区域外才执行关闭逻辑。这种方法可行,但是不优雅。
在这里插入图片描述
在这里插入图片描述
第二种方案,是将 button 挂载到子节点同层级的 object 上,而不是直接放在主节点上。通过尝试,发现取消 Raycast Target 选项时,点击 imgBg 时会穿透使得 bgMask 上的 button 响应。勾上 Raycast Target 选项后,不再穿透。从这里可以看出,Raycast Target 选项对于同级对象,只有最上层对象会响应点击,但是为了让点击事件能传递下去,该选项不会阻止下级节点(父节点)的响应。
在这里插入图片描述
在这里插入图片描述
参考链接:

  • UI点击穿透组件
关键字:android手机软件开发教程_ui网页设计排版_上海培训机构排名_最新新闻热点

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: