Unity Rect.OverLaps(Rect other) 改进

改进原因:

Scale缩放后该内置函数判断有误,原因是scale后Unity并不改变RectTransform .Rect的值;解决办法是重新计算缩放后的Rect;

public static class Tools
{
    public static Rect GetRect(this RectTransform self)
    {
        float width = Mathf.Abs(self.sizeDelta.x * self.localScale.x);
        float height = Mathf.Abs(self.sizeDelta.y * self.localScale.y);
        Vector2 center = self.anchoredPosition;
        return new Rect(center.x- width/2f, center.y-height/2f, width,height);
    }

    public static bool OverLaps(this RectTransform self,RectTransform other)
    {
        return self.GetRect().Overlaps(other.GetRect());
    }
}


版权声明:本文为danteshenqu原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。