最近,我需要在项目中使用非标准形式的按钮。 但是,这项看似微不足道的任务给我带来了一些困难。
问题在于,即使在透明区域中,标准的UI按钮也可以处理单击,在这种情况下,这是完全不希望的。 同时,Button组件本身没有任何(在检查器中可见)参数,这些参数可能负责按钮的哪些区域可以处理悬停/单击。
经过一段时间的互联网搜索和吸烟文档搜索后,以下是这个简单的解决方案:
(我马上要说一个类似的例子在
Unity文档中 ,但是目前它的代码已经被标记为过时了,所以我决定对其进行一些更新和修改)
using UnityEngine; using UnityEngine.UI; public class ButtonClickMask : MonoBehaviour { [Range(0f, 1f)]
- 在检查器中显示方便滑块的属性,其值从0到1。
- 光标在其上的纹理部分必须具有的最小Alpha通道值才能处理单击。
- 按钮的图像组件(您需要使用它,而不是按钮)。
- alphaHitTestMinimumThreshold参数正是确定部分纹理的最小透明级别的参数,以便它可以处理压制。
脚本准备就绪。 现在让我们继续调整按钮的纹理。 为了使代码正常工作而不产生错误,必须在“导入设置”纹理中启用读取/写入功能。 请记住通过单击“应用”接受更改。

现在,将脚本挂在所需的按钮上,将“ Alpha Level”设置为所需的值(在我的情况下为1)...

...我们启动并为按钮不再处理对透明区域的点击感到高兴!
