打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
【   】NGUI防穿透问题以及物体随鼠标移动
      今天来说说我在做项目中遇到的另一个问题,就是NGUI穿透的问题。(今天正好有好基友问我这个问题- -自己又进一步小研究了下。。。)
     NGUI穿透问题,其实就是场景中的点击事件与NGUI的Button点击事件相冲突的问题。这个问题网上已经有解决方法了,我也只是把自己学的写出来而已。
     首先新建个场景。。。让场景中Cube与Button重合。。。
  
     之后我写了一个脚本,当鼠标按下的时候,让Cube随鼠标进行移动。这个不难,我在最后贴出这部分的代码。
     现在我写一个方法,触发Button点击事件。



     准备工作完成了,那么进入正题。
      当我运行的时候,我点击Button按钮,但同时的,后面的Cube也随着我的鼠标移动了。现在我想要的效果是,点击按钮的时候,不会触发后面的Cube移动。
     我来说两种方法,其实都是NGUI自带的方法。

     第一种:UIcamera.hoveredObject

     这个方法的意思就是,它会检测到由UICamera发出的射线所碰触的最后一个UI。(当然别忘了加collider。。。。),你可以在Update里写个


         
这个更直观。
          再说我们的方法,如果我想让点击Button的时候不让Cube移动,我可以在Cube移动的方法里加上一个限制条件,如下:
         


          我想说明的一点是,我使用的NGUI版本是3.7.2,有时候在我运行的时候,我的UI Root的红色框会变得无限大。。。这个问题愁得我都睡不好觉了。。自适应老出问题。。。我也求大神帮我解答。。

     所以我觉得用下面这行也是能判断的。
  

  
        
 顺便附上NGUI中关于hoveredObject的部分
         

     第二种:UIcamera.isOverUI

          这个方法的意思是,你的鼠标是否停留在了UI上。他是一个bool值。
          现在我们将之前用hoveredObject的判定改为

         
           我们在运行,发现当鼠标停留在了Button并点击时,发现Cube并不会移动了。当我们把鼠标移出Button的范围时(事实上是Button上collider的范围),就可以进行Cube的移动了。。完美解决穿透问题。

           对于这两种方法,我更推荐后一种,后一种更好理解。但是这个方法貌似在3.6.8之前的NGUI版本是没有的,但是在3.7.2中是有的。
          (P.S  现在蛮牛上都在讲UGUI的东西。。。但我接触Unity的时候,我先学的是UGUI的东西。。。所以跟大多数人比起来,,我对UGUI掌握的更好。。,写这个是不是显得有点过时了哈哈)

               再说说物体随鼠标移动问题。这其实就是一个世界坐标系与屏幕坐标系的转换问题,理清了就特别容易了。我直接上代码了,应该不难理解。

             附上完整脚本。
               
         
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
NGUI总结
NGUI 学习
移动鼠标 欢乐开心
NGUI所见即所得之UICamera
Unity3d中使用鼠标拖动物体移动
NGUI动态添加
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服