点到UI 不会误点到物体

这几天在做捕鱼达人游戏时发现,当鼠标点击UI时,炮台的子弹也会发射子弹,这样会影响用户体验。

   然后网上百度了一波,发现在UGUI系统上,EventSystem提供了一些方法。那就是EventSystem.current.IsPointerOverGameObject()方法,作用:判断鼠标是否点击在UI上。

  因此,我们可以在开火前做一个判断

if (Input.GetMouseButtonDown(0)&& EventSystem.current.IsPointerOverGameObject()== false)

   {

      //生成子弹

   }

这样就行了。

但是!但是!结果运行起来,点击UI是无法生成子弹,这是实现了,可是点击没有UI的地方却无法生成子弹,这就令人很崩溃了!

原来在我们的背景图上,它也是一个UI Image,那这样这个判断是否点击UI上的方法岂不是实现不了?

但EventSystem貌似早就为我们想好了。在Image组件上的有一个Raycast Type的复选框,只要我们把勾选去掉,就行了。

因此我推测EventSystem.current.IsPointerOverGameObject()方法的原理是,是根据UI上的Raycast Target的勾选来遍历,那些UI需要鼠标点击判断,那些不需要。

不过,这也是我的推测而已,还没真正的查过文档,希望大神可以过来补充谢谢

作者:DGC_老莫
来源:CSDN
原文:https://blog.csdn.net/weixin_37020931/article/details/79053678

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值