You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中Event System射线检测不到GameObject,点击事件异常求助

Unity Canvas下BoxCollider2D对象无法被EventSystem射线检测的原因及解决方法

核心原因

  1. Canvas默认依赖GraphicRaycaster做UI射线检测,它只识别带有UI组件(如Image、Text)且开启Raycast Target的对象——你的Ground没有UI组件,因此被射线检测跳过。
  2. 虽然给Ground添加了BoxCollider2D,但EventSystem默认未挂载Physics2DRaycaster组件,无法对2D物理碰撞体进行点击事件检测。

解决办法

办法一:将Ground转为UI元素(推荐,适配Canvas层级)

  • 给Ground添加Image组件:若不需要显示视觉内容,可将Sprite设为None、Color调整为全透明。
  • 确保Image组件的Raycast Target选项处于勾选状态(默认启用)。此时Image的RectTransform会作为点击区域,也可保留BoxCollider2D自定义碰撞范围。

办法二:给Canvas添加Physics2DRaycaster组件

  • 选中场景中的Canvas对象,在Inspector面板点击Add Component,搜索并添加Physics2DRaycaster。
  • 该组件会让EventSystem的射线检测覆盖2D物理碰撞体,带BoxCollider2D的Ground即可被点击触发事件。

必查验证项

  • 确认Ground的BoxCollider2D处于启用状态,且碰撞范围覆盖目标点击区域。
  • 检查场景中存在EventSystem对象(创建Canvas时自动生成,若误删可右键菜单选择UI > Event System重新创建)

内容的提问来源于stack exchange,提问作者DidemDR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 04:15:03