【unity游戏开发入门到精通——UGUI】实现精准点击异形或者不规则图片button按钮
注意
:考虑到UGUI的内容比较多,我将UGUI的内容分开,并全部整合放在【unity游戏开发——UGUI】专栏里,感兴趣的小伙伴可以前往逐一查看学习。
文章目录
- 前言
- 方法一、通过添加子对象的形式
- 方法二、通过代码改变图片的透明度响应阈值
- 专栏推荐
- 完结
前言
异形或者不规则图片按钮是指形状不是传统矩形的按钮。比如我下面的这种图片。那么我们要如何实现精准点击按钮区域呢?
我们在制作UGUI的时候经常会遇到需要精准点击不规则按钮或有部分透明区域的按钮的情况,但如果是正常创建Button的话,空白区域也会响应点击事件,因为我们的图片基本都是占用的矩形区域,如下:
方法一、通过添加子对象的形式
按钮之所以能够响应点击,主要是根据图片矩形范围进行判断的。其范围判断是自下而上的
,也就是说如果有子对象图片,子对象图片的范围也会算为可点击范围。因此,你可以利用多个透明图拼凑不规则图形作为按钮子对象,用于进行射线检测,从而实现更加灵活多样的按钮形状。
比如我们给这个不规则按钮添加三张子物体图片,放在按钮点击区域外。
- 第一张图片不做修改
- 第二张图片透明度改成0
- 第三张图片移除image组件
运行预先,我们发现点击透明度为0和正常图都能响应不规则图片的点击事件。点击去除image组件的图不能响应。这就是前面说的判断点击范围自下而上。
所以我们就可以通过给不规则图片按钮添加透明的为0的子物体图片的方法,让可以点击的范围尽量贴合我们的不规则图片大小。
记得还要取消勾选不规则主图的光线投射目标
。
运行游戏,点击效果
方法二、通过代码改变图片的透明度响应阈值
我们要先开启不规则图片资源的Read/Write Enabled
读写功能
新增脚本
using UnityEngine;
using UnityEngine.UI;public class NewMonoBehaviourScript : MonoBehaviour
{Image image;void Start(){image = GetComponent<Image>();image.alphaHitTestMinimumThreshold = 0.1f;}
}
挂载脚本(注意:千万别忘记了开启光线投射目标
)
效果
解释:
image.alphaHitTestMinimumThreshold
用于设置 Alpha 透明度命中测试的最小阈值。具体来说,如果一个图片某些区域的 alpha透明度值低于这个阈值,那么即使它在屏幕上显示出来,它也不会响应点击事件。
需要注意的是,这个属性在不同的Android版本中可能会有不同的行为,因此在使用时需要仔细测试和考虑兼容性。
专栏推荐
地址 |
---|
【unity游戏开发入门到精通——C#篇】 |
【unity游戏开发入门到精通——unity通用篇】 |
【unity游戏开发入门到精通——unity3D篇】 |
【unity游戏开发入门到精通——unity2D篇】 |
【unity实战】 |
【制作100个Unity游戏】 |
【推荐100个unity插件】 |
【实现100个unity特效】 |
【unity框架/工具集开发】 |
【unity游戏开发——模型篇】 |
【unity游戏开发——InputSystem】 |
【unity游戏开发——Animator动画】 |
【unity游戏开发——UGUI】 |
【unity游戏开发——联网篇】 |
【unity游戏开发——优化篇】 |
【unity游戏开发——shader篇】 |
完结
好了,我是向宇
,博客地址:https://xiangyu.blog.csdn.net,如果学习过程中遇到任何问题,也欢迎你评论私信找我。
赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注
,你的每一次支持
都是我不断创作的最大动力。当然如果你发现了文章中存在错误
或者有更好的解决方法
,也欢迎评论私信告诉我哦!