Unity3D Extension扩展方法(三):扩展RectTransform

发表于2018-07-16
评论0 1.7k浏览
RectTransform主要提供一个矩形的位置、尺寸、锚点和中心信息以及操作这些属性的方法,同时提供多种基于父级RectTransform的缩放形式。那下面我们就来看看RectTransform扩展。

Size 尺寸扩展

1.获取UI尺寸
public static Vector2 GetSize(this RectTransform rect)
{
    return rect.rect.size;
}

2.设置UI尺寸的几种常用实现
public static void SetSize(this RectTransform rect, float width, float height)
{
    rect.SetWidth(width);
    rect.SetHeight(height);
}
public static void SetSize(this RectTransform rect, Vector2 size)
{
    rect.SetWidth(size.x);
    rect.SetHeight(size.y);
}
public static void SetWidth(this RectTransform rect, float width)
{
    rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, width);
}
public static void SetHeight(this RectTransform rect, float height)
{
    rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, height);
}

顶点扩展

1.获取顶点坐标数组
返回结果的顶点索引为
左上角:1
右上角:2
左下角:0
右下角:3
public static Vector3[] GetCorners(this RectTransform rect, bool isWorldSpace = true)
{
    var corners = new Vector3[4];
    if (isWorldSpace)
    {
        rect.GetWorldCorners(corners);
    }
    else
    {
        rect.GetLocalCorners(corners);
    }
    return corners;
}

2.获取单个顶点
public static Vector3 GetLeftBottonCorner(this RectTransform rect, bool isWorldSpace = true)
{
    var corners = rect.GetCorners(isWorldSpace);
    return corners[0];
}
public static Vector3 GetLeftTopCorner(this RectTransform rect, bool isWorldSpace = true)
{
    var corners = rect.GetCorners(isWorldSpace);
    return corners[1];
}
public static Vector3 GetRightTopCorner(this RectTransform rect, bool isWorldSpace = true)
{
    var corners = rect.GetCorners(isWorldSpace);
    return corners[2];
}
public static Vector3 GetRightBottonCorner(this RectTransform rect, bool isWorldSpace = true)
{
    var corners = rect.GetCorners(isWorldSpace);
    return corners[3];
}

Unity Extension扩展方法系列

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

0个评论