我们会遇到图片不是方形的不规则图片。这个时候我们希望只有点击到图像内容本身才算点击,点击空白区域则不算点击。而UGUI对图片的处理是整个图片都会算作点击区域,这样不能满足于我们的使用需求了。
首先我们需要把图片本身的Read/Write 选项打开
然后代码中我们需要去改变Image组件的alphaHitTestMinimumThreshold的阈值
代码如下
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class CustomAlphaHitTest : MonoBehaviour
{
public List<Image> imageComponents;
public float alphaThreshold = 0.5f;
void Start()
{
for (int i = 0; i < imageComponents.Count; i++)
{
imageComponents[i].alphaHitTestMinimumThreshold = alphaThreshold;
}
}
}
总结:
如果将 alphaHitTestMinimumThreshold
设置为 0.5,那么只有点击不透明度(Alpha 值)大于或等于 0.5 的像素时,点击事件才会被触发。换句话说,只有点击图像上不透明度较高的部分时,点击事件才会被认为有效。
这意味着对于透明度小于 0.5 的像素,点击事件将被忽略,而对于透明度大于等于 0.5 的像素,点击事件才会被处理。