首页 > Unity3D频道 > 【UGUI研究院】 > UGUI研究院之不规则按钮的响应区域(十四)
2015
05-15

UGUI研究院之不规则按钮的响应区域(十四)

接上一篇文章 UGUI研究院之忽略UI被拦截事件(十三)

比如一些不规则按钮最好可以设置它的响应区域。如下图所示,用Polygon Collider2D组件圈出精灵响应事件的区域。

UGUI研究院之不规则按钮的响应区域(十四) - 雨松MOMO程序研究院 - 1

 

注意 IsRaycastLocationValid 的判断区域是RectTransform的区域。 如果 polygon Collider编辑出来的区域大于RectTransform , 必须调节RectTransform的区域。

例子:比如想把按钮的点击区域改成不规则的。

1.把按钮的image的RaycastTarget关闭勾选

2.在子节点创建新的gameObject挂上下面UIPolygon脚本。

3.编辑Polygon的区域即可。

 

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

--

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

  1. 雨松大神,我使用你这种方法在960*640的画布上可以,但是到1920*1080的画布就不行了。而且在960*640的画布上如果我缩小或者放大窗口,也会出现问题。我想请问一下应该怎么修改呢?万分期待你的回复~~~~

  2. 我试了好久。添加了一个Polygon Collider2D到Button上,Collider的区域特别小,应该只是0.01倍。最重要的是点击Edit Collider无法编辑。后来找到了http://blog.csdn.net/fg5823820/article/details/48165659这个文章,发现我的Canvas的Z轴不是0,但是此处无法直接修改它。于是修改Canvas组件的Plane Distance直到Z变成0,这个时候奇迹发生了,Polygon Collider可以编辑了,虽然不明所以,不过我觉得可以分享给大家~

    • 你可以建一个空UI对象(想多大就多大,反正包住Collider就行),将图片作为他的子对象,Collider针对这个空UI对象,这样图片区域的限定就没有了。

    • 你可以建一个空UI对象(想多大就多大,反正长宽能包住Collider就行),将图片作为他的子对象,Collider针对这个空UI对象操作,这样图片区域的限定就没有了。

  3. 可以使用Image的eventAlphaThreshold啦~~~设置前需要改一下Sprite的TextureType用Advanced,然后设置Read/Write Enabled,还要不使用Sprite Atlas…限制挺多..

  4. 大神,我想问下,如何扩大图片的响应区域呀?我发现当Collider2D组件范围超出图片之后。超出的那部分不会响应事件,IsRaycastLocationValid函数也没有触发。