您的位置:首页 > 移动开发 > Unity3D

Unity中关于2D游戏的鼠标点击事件和UI层级检测的大坑

2018-02-05 00:51 465 查看

 最近的项目中遇到了一个大坑,就是关于2D游戏的鼠标点击事件和UI层级检测的。不知道大家有没有用过

Unity中内置的函数OnMouseDown等。如果你用了OnMouseDown这个函数,然后呢又恰巧用了UI,当然

很多时候我们都会用到UI。这个时候要注意了。

 我猜测,这个Unity内置的OnMouseDown的实现原理就是利用射线检测来实现的,只不过官方为我们把这个方法封装成了回调法。我们在用射线检测一个游戏物体的时候,要特别注意这个游戏中各个物体之间的层级关系。我在这里就

遇到了这个问题。当我点击这个游戏物体的时候,本来它应该做出相应的变化,但是效果却不好,有时候能

检测到,有时候不能。找了半天,才发现原因。原因就是我没有规划好UI的层级检测关系。因为当我点击鼠

标的时候,UI会来妨碍,这一个Canvas把我几乎所有的检测都遮挡住了。所以呢我就去网上查找了相关资料

,最后终于把问题解决了。

如何解决呢?

 关键的地方在Canvas上面挂着的组件。最大的问题在那个叫做,Grphic Raycaster组件上面。我

们要把Blocking Objects选成Two D,然后把BlockingMask勾选成UI。这样就可以了,这样就代表在2D

游戏场景中,不对UI物体做射线检测。

 








 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: