首页 > Unity3D频道 > 【UGUI研究院】 > UGUI研究院之判断鼠标或者手指是否点击在UI上(六)
2014
10-27

UGUI研究院之判断鼠标或者手指是否点击在UI上(六)

比如战斗场景,UI和3D场景同时都需要响应触摸事件,如果同时响应可能就会出现触摸UI的时候影响到了3D部分。为了解决这个问题在判断3D响应之前要先判断手指是否点击在UI上。 以前NGUI的时候都是自己来发送射线判断,现在UGUI好了系统提供了更为简便的方法。

 

这段代码我在Android上已经测试通过。 哦 我用的是unity5.1

雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!

--

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。

  1. 如果只是要判断“当前”image是否点击可以用IPointerDownHandler,普通ui好用了吧public class JoystickUI : MonoBehaviour, IPointerDownHandler,IPointerClickHandler{作为一个普通程序员,在update里面写太多东西,会后怕,不是不可以写,网上例子都是这么写的,但是真的前提是你要写对,和无数次测试和实践

  2. 还是雨松这里靠谱啊,网上都是些raycast的文章,拜托,真的搞项目的时候UI多过3D很多,请行外人先搞明白2D再3D吧,一上来就搞3D,就算你搞懂了,。。。。其实也没办法搞懂的,因为一开始方向就错了,出来的结果也是错的,也没法很完整的想法分享,没分享没进步。

  3. 我的场景中有多个UI,我在其中一个UI上加载了脚本,结果所有的UI都执行了脚本,我该如何获取触摸到的ui的名呢?

  4. 雨松三三你好,5.1可用。实际应用中会有这个情况,有些ui例如按钮,需要判断是否点击在ui上。还有一些 ,例如显示信息的标签,不需要判断是否点击在ui上,如何在程序中将两者区分。
    我以前 采取的方案是 将没有图案的rectTransform覆盖至需要判断的按钮列上,然后计算出rectTransform的四个顶点坐标,通过判断鼠标是否在rectTransform的区域内来得出结果。效果很好但很麻烦。
    这里希望能得到一种更简便的方式。所以想知道 如何将需要进行判断的ui和不需要进行判断的ui区分。

  5. Unity5上这个方法在真机上不好使啊,我用判断currentSelectedGameObject是否为空替代了。。。不知道是不是我的用法有问题

  6. 借个帖子发个问题,雨大大,我在将一个大地形切割成若干个小地形时候,这个大地形是有光照贴图的,生成的若干个小地形需要赋值这个光照贴图的各个部分,怎么赋值呢,我找了好久没没找到怎么赋值。

      • 额,这个我知道,原本是的光照贴图是一张整的地形光照图,现在几个若干小地形要做个偏移什么的吧。Renderer里面有lightmapScaleOffset 和lightmapIndex。但是Terrain.lightmapIndex 就这一个属性没有 lightmapScaleOffset 光照贴图平铺偏移属性,我怎么做偏移呢? UGUI研究院之判断鼠标或者手指是否点击在UI上(六) - 雨松MOMO程序研究院 - 1

  7. 正在把游戏中的NGUI转成UGUI,遇到了好多坑。。其中一个是新手引导中设置焦点,屏蔽其他交互的问题。NGUI中可以用Event Mask做。UGUI中找到个类似的东西,叫Graphics Raycaster,其中可以设置Block Mask。可是我发现设置了Block Mask也不起作用,并没有屏蔽其他layer,是我使用方法有问题?

  8. 我的4.6b18没找到EventSystem.current.IsPointerOverGameObject()原文的 EventSystemManager.currentSystem.IsPointerOverEventSystemObject()编译通过,也切实可行。感谢momo