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

Unity中如何用IPointer检测鼠标悬停在Box Collider 2D而非Image上

可行解决方案

针对UI Image卡牌包场景

如果你的卡牌包是UI系统下的Image组件,按以下步骤调整:

  • 确保场景中存在EventSystem(右键菜单选「UI > EventSystem」快速创建)
  • 给承载卡牌包的Canvas添加Physics2DRaycaster组件(默认Canvas只有GraphicRaycaster,需补充这个来让2D碰撞器响应UI指针事件)
  • 关闭卡牌包Image组件的「Raycast Target」选项(取消用图片自身范围检测指针)
  • 给卡牌包对象添加BoxCollider2D,调整碰撞盒大小到你需要的检测范围
  • 实现IPointerEnterHandler和IPointerExitHandler接口,或者直接给对象加EventTrigger组件,绑定「Pointer Enter」和「Pointer Exit」事件来切换图片

针对非UI Sprite卡牌包场景

如果卡牌包是场景中的SpriteRenderer(非UI元素):

  • 给你的主相机添加Physics2DRaycaster组件
  • 确保卡牌包对象有BoxCollider2D,调整好检测范围
  • 实现IPointerEnterHandler和IPointerExitHandler接口,此时指针事件会基于Collider2D触发
  • 或者直接改用OnMouseEnter()和OnMouseExit()方法,这两个方法本身就是基于Collider2D检测的,不需要额外配置事件系统的Raycaster

替代方案:分离检测与显示

如果不想修改原有UI配置,可以创建一个空对象作为卡牌包的子对象:

  • 给空对象添加BoxCollider2D,设置好需要的检测范围
  • 给空对象添加EventTrigger组件,绑定悬停事件来控制父对象的图片切换
  • 空对象不需要任何渲染组件,只负责检测指针交互,完全不影响原图片的显示范围

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 15:03:17