类似这种不规则按钮
找到当前按钮图片
将Mesh Type格式设置为Full Rect(提高像素检测)
勾选Read/Write Enbale
unity的image提供了一个alphaHitTestMinimumThreshold的属性,这个属性提供了一个限制鼠标检测的一个alpha值
GetComponent().alphaHitTestMinimumThreshold = 0.5f;
点击图片上像素的alpha值小于0.5的区域,程序就不会有响应,具体值自己设
void Start()
{
GetComponent<Image>().alphaHitTestMinimumThreshold = 0.5f;
}
注:Full Rect和Tight两种Mesh Type的官方解释
总的来说就是,用Tight模式的话,如果你的图片周围有空白像素,它会帮你压缩掉减小面积,以减少DrawCall,但是会增加Sprite的面数。如果用Full Rect模式不会压缩,也不会增加面数,直接创建一个quab,然后把图片扔上去。如果尺寸小于32x32的话,Unity默认使用Full Rect格式导入,否则使用Tight格式导入。因此如果我们不对Mesh Type进行设置的话,原来的一些空白区域就相当于裁剪掉了,这样相对于左下角的坐标来说,一些像素坐标就发生了偏移,而我们使用的是像素检测方法,必然也会导致偏移误差。