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

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

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

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

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

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

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

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

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

如何解决呢?

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值