改进原因:
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());
}
}