【解决】鼠标交互UI EventSystem 无响应的问题

更新日期:2022/11/4
更新日期:2024/11/4

开发平台:Unity 2021
编程平台:Visual Studio 2022

一、问题描述


  在 Unity 开发多 Canvas 组合的框架下容易遭遇 Canvas 下 UI 点击事件无法触发的问题。对UI框架造成一定程度的影响。考量到影响程度。记录此问题的解决方案。

备注:修改 UGUI 显示优先级需要 Canvas 组件覆写渲染层级。存在些开发情况下,忽略 GraphicRaycast 组件对交互功能的影响。进而发生误判在 Event System 、层级覆盖上等问题。

二、检查思路


2.1 确认 UGUI EventSystem 是否存在且正常运行

在这里插入图片描述
默认创建 UGUI Canvas 时,会增加管理 UGUI 的 Event System 组件。在 Unity 2020 版本以上的 New Input System 会要求使用在 InputSyetemUIInputModule.cs 组件上的修复与应用按钮。

2.2 确认 交互UI对象 在层级上无其他UI可覆盖

在这里插入图片描述
在 Unity 中,层级显示关系的分两种情况处理。

该情况,应注意使用中层级下者是否有 gameObject.SetActive(true) / gameObject.acticeslef = true 的状态。

  • 情景01:存在后层级中 gameObject 为 true,对象挂载如 UnityEngine.UI.Image 这类继承 Graphics 的组件。该部分组件使用 Alpha = 0 的预设配置。
  • 情景02:自身或父层级使用 UnityEngine.UI.CavnasGroup / GraphicsRaycast 这类组件,其内设定的 Ignore\Block 等属性阻碍原目标 UI 对象的判断。

三、解决方案:补充 Graphic Raycaster 组件


在这里插入图片描述

  不触发 UI点击事件 的核心原因是缺少检测UI图形的组件 —— Graphic Raycaster。该组件服务于 Canvas画布组件。检测其下的所有 UGUI图像与响应事件。

特殊情况:在预制体下,确认 Canvas 均装有 Graphic Raycaster 组件。但仍然未触发 UGUI事件。
解决方式

  • 取消关联 Prefab 根对象。重新制作新的预制体即可
  • 或检查预设与实际冲突存在的组件,因为笔者在预制体(根)中添加 Graphic Raycaster 组件后,与原场景在用对象冲突,出现多批的两个同组件被装载的问题。重还原至根预设信息,并更新组件即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值