UGUI中不规则形状按钮的碰撞检测

在制作功能时,偶尔会遇到使用不规则的按钮,碰撞检测当然也要做到与按钮的形状一致,但是我们的图片都是矩形的,所以需要我们单独设置与按钮形状一致的碰撞检测区域。

使用的组件:Button,Polygon Collider 2D,UguiImagePlus(继承Image)

UguiImagePlus.cs (Image扩展类)

using UnityEngine;
using UnityEngine.UI;

public class UguiImagePlus : Image
{
    //声明多边形碰撞器组件
    private PolygonCollider2D mCollider;

    protected override void Awake()
    {
        base.Awake();
        mCollider = GetComponent();
    }

    public override bool IsRaycastLocationValid(Vector2 screenPoint, Camera eventCamera)
    {
        //判断触摸是否在圈出的多边形区域内
        var inside = mCollider.OverlapPoint(screenPoint);
        return inside;
    }
}

创建一个Button删除Image组件,添加UguiImagePlus,拖动图片设置。

image.png

添加Polygon Collider 2D组件,然后设置不规则的区域。

编辑说明

经过以上设置,你已经制作一个与图片像素区域一致的碰撞检测区域了。

你可能感兴趣的:(UGUI中不规则形状按钮的碰撞检测)