当前位置: 首页 > backend >正文

【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,如果学习过程中遇到任何问题,也欢迎你评论私信找我。

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!
在这里插入图片描述

http://www.xdnf.cn/news/3677.html

相关文章:

  • 字符串的相关方法
  • 【黑马JavaWeb+AI知识梳理】后端Web基础02 - Web基础
  • 街景主观感知全流程(自建数据集+两两对比程序+Trueskill计算评分代码+训练模型+大规模预测)20
  • Winform(8.常用控件1)
  • 电商平台的订单状态设计流程
  • QT中的QSS---界面美化
  • 时间给了我们什么?
  • 本地服务验证-仙盟创梦IDE-智能编程,编程自动备份+编程审计
  • C++开发指南
  • MyBatis 参数处理全解析
  • AI大模型-RAG到底能做些什么?
  • 变色龙-第16届蓝桥第5次STEMA测评Scratch真题第1题
  • 52、【OS】【Nuttx】【OSTest】setvbuf 测试
  • 正态分布全景解析:理论、推导与应用
  • Linux-sysctl工具解析
  • 《AI大模型应知应会100篇》第44篇:大模型API调用最佳实践(附完整代码模板)
  • GC9D01 和 GC9A01两种TFT 液晶显示驱动芯片
  • Set的局限性
  • C#将Mat或Byte快速转换为Bitmap格式
  • 组件通信-provide、inject
  • maven install时报错:【无效的目标发行版: 17】
  • 多模态大模型轻量化探索-视觉大模型SAM(Segment Anything Model)
  • C++11新特性_标准库_智能指针_std::weak_ptr
  • MATLAB技巧——norm和vecnorm两个函数讲解与辨析
  • Linux的环境变量
  • “会话技术”——Cookie_(2/2)原理与使用细节
  • [更新完毕]2025五一杯C题五一杯数学建模思路代码文章教学:社交媒体平台用户分析问题
  • Linux 信号
  • 反射机制补充
  • 滥用绑定变量导致Oracle实例宕机