Unity3D中导入Blender的网格使用Mesh Collider无法触发鼠标交互
解决Mesh Collider无法触发OnMouseEnter/Exit的问题
嘿,你的ChangeColor脚本逻辑完全没问题,问题出在Unity对Mesh Collider的交互检测规则上!咱们一步步调整就能搞定:
方法1:保留物理碰撞能力的设置
如果你的三角形物体需要和其他物理对象产生碰撞(比如被玩家推动),按以下步骤操作:
- 选中你的三角形物体,在Inspector面板找到Mesh Collider组件
- 勾选Convex选项:Unity仅允许凸面体Mesh Collider参与射线检测(也就是触发OnMouse系列事件),非凸的Mesh Collider默认只能作为静态场景障碍物,无法响应交互
- 若Convex选项呈灰色无法勾选:打开Blender模型的导入设置,找到Mesh标签,勾选Read/Write Enabled后点击Apply——Unity需要读取Mesh数据才能生成凸面体碰撞器
方法2:仅需交互的简化设置
如果你的物体只需要实现悬停变色,不需要物理碰撞效果,直接这么做:
- 选中Mesh Collider组件,勾选Is Trigger选项
- 此时不管Mesh是否为凸面体,射线检测都能正常触发OnMouseEnter/Exit事件,你的脚本直接就能生效
额外检查项
- 确认物体的Layer未被排除在射线检测外:打开
Edit > Project Settings > Physics,在Layer Collision Matrix中,确保物体所在Layer与主相机的Layer(默认都是Default)处于可互相检测的状态 - 3D场景无需额外组件,但如果是UI混合场景,要确保主相机添加了Physics Raycaster组件
调整完成后,你的悬停变色功能就能正常工作啦!
内容的提问来源于stack exchange,提问作者vasco_t
相关产品推荐
相关产品推荐

