示例#1
0
 public static bool IsX(this RectAnchor anchor)
 {
     switch (anchor)
     {
     case RectAnchor.Left:
     case RectAnchor.Right:
     case RectAnchor.XStretch:
     case RectAnchor.XCenter:
         return(true);
     }
     return(false);
 }
示例#2
0
 public static void SetAnchor(this RectTransform trans, RectAnchor anchor)
 {
     if (anchor.IsX())
     {
         trans.anchorMin = new Vector2(anchor.Min(), trans.anchorMin.y);
         trans.anchorMax = new Vector2(anchor.Max(), trans.anchorMax.y);
     }
     else
     {
         trans.anchorMin = new Vector2(trans.anchorMin.x, anchor.Min());
         trans.anchorMax = new Vector2(trans.anchorMax.x, anchor.Max());
     }
 }
示例#3
0
    public static GameObject CreatePanel(string name, Color color, Transform parent, RectAnchor anchorX, RectAnchor anchorY)
    {
        GameObject go = new GameObject(name);

        go.AddComponent <CanvasRenderer>();
        RectTransform trans = go.AddComponent <RectTransform>();
        Image         img   = go.AddComponent <Image>();

        img.color = color;

        trans.SetParent(parent);
        trans.SetAnchor(anchorX);
        trans.SetAnchor(anchorY);
        trans.offsetMin = Vector2.zero;
        trans.offsetMax = Vector2.zero;
        return(go);
    }
示例#4
0
    public static float Max(this RectAnchor anchor)
    {
        switch (anchor)
        {
        case RectAnchor.Left:
        case RectAnchor.Bottom:
            return(0.0f);

        case RectAnchor.XStretch:
        case RectAnchor.YStretch:
        case RectAnchor.Right:
        case RectAnchor.Top:
            return(1.0f);

        case RectAnchor.XCenter:
        case RectAnchor.YCenter:
            return(0.5f);
        }
        return(0.0f);
    }
示例#5
0
        public static Vector3 AnchoredPosition(RectTransform origin,
                                               RectTransform target,
                                               RectAnchor pos,
                                               float offset)
        {
            var originCorners = new Vector3[4];

            origin.GetWorldCorners(originCorners);

            var retVal = new Vector3(0, 0, 0);

            switch (pos)
            {
            case RectAnchor.Top:
                retVal = ((originCorners[1] + originCorners[2]) * 0.5f) +
                         new Vector3(0, target.rect.height / 2f + offset, 0);
                break;

            case RectAnchor.Bottom:
                retVal = ((originCorners[0] + originCorners[3]) * 0.5f) -
                         new Vector3(0, target.rect.height / 2f + offset, 0);
                break;

            case RectAnchor.Left:
                retVal = ((originCorners[0] + originCorners[1]) * 0.5f) -
                         new Vector3(target.rect.width / 2f + offset, 0, 0);
                break;

            case RectAnchor.Right:
                retVal = ((originCorners[2] + originCorners[3]) * 0.5f) +
                         new Vector3(target.rect.width / 2f + offset, 0, 0);
                break;
            }

            return(retVal);
        }
    public void SetAnchor(RectTransform rectTran, RectAnchor anchor, float posX = 0, float posY = 0)
    {
        switch (anchor)
        {
        case RectAnchor.UpperLeft:
            rectTran.pivot              = Vector2.up;
            rectTran.anchorMin          = Vector2.up;
            rectTran.anchorMax          = Vector2.up;
            rectTran.anchoredPosition3D = Vector3.zero;
            rectTran.localScale         = Vector3.one;
            break;

        case RectAnchor.UpperCenter:
            rectTran.pivot              = Vector2.up + Vector2.right * 0.5f;
            rectTran.anchorMin          = Vector2.up + Vector2.right * 0.5f;
            rectTran.anchorMax          = Vector2.up + Vector2.right * 0.5f;
            rectTran.anchoredPosition3D = Vector3.right * posX + Vector3.up * posY + Vector3.zero;
            rectTran.localScale         = Vector3.one;

            break;

        case RectAnchor.UpperRight:
            rectTran.pivot              = Vector2.one;
            rectTran.anchorMin          = Vector2.up + Vector2.right;
            rectTran.anchorMax          = Vector2.up + Vector2.right;
            rectTran.anchoredPosition3D = Vector3.right * posX + Vector3.up * posY + Vector3.zero;
            rectTran.localScale         = Vector3.one;

            break;

        case RectAnchor.MiddleLeft:
            rectTran.pivot              = Vector2.up * 0.5f;
            rectTran.anchorMin          = Vector2.up * .5f;
            rectTran.anchorMax          = Vector2.up * .5f;
            rectTran.anchoredPosition3D = Vector3.right * posX + Vector3.up * posY + Vector3.zero;
            rectTran.localScale         = Vector3.one;

            break;

        case RectAnchor.MiddleCenter:
            rectTran.pivot              = Vector2.one * .5f;
            rectTran.anchorMin          = Vector2.up * 0.5f + Vector2.right * 0.5f;
            rectTran.anchorMax          = Vector2.up * 0.5f + Vector2.right * 0.5f;
            rectTran.anchoredPosition3D = Vector3.right * posX + Vector3.up * posY + Vector3.zero;
            rectTran.localScale         = Vector3.one;

            break;

        case RectAnchor.MiddleRight:
            rectTran.pivot              = Vector2.up * .5f + Vector2.right;
            rectTran.anchorMin          = Vector2.up * .5f + Vector2.right;
            rectTran.anchorMax          = Vector2.up * .5f + Vector2.right;
            rectTran.anchoredPosition3D = Vector3.right * posX + Vector3.up * posY + Vector3.zero;
            rectTran.localScale         = Vector3.one;

            break;

        case RectAnchor.LowerLeft:
            rectTran.pivot              = Vector2.zero;
            rectTran.anchorMin          = Vector2.zero;
            rectTran.anchorMax          = Vector2.zero;
            rectTran.anchoredPosition3D = Vector3.right * posX + Vector3.up * posY + Vector3.zero;
            rectTran.localScale         = Vector3.one;

            break;

        case RectAnchor.LowerCenter:
            rectTran.pivot              = Vector2.right * .5f;
            rectTran.anchorMin          = Vector2.right * .5f;
            rectTran.anchorMax          = Vector2.right * .5f;
            rectTran.anchoredPosition3D = Vector3.right * posX + Vector3.up * posY + Vector3.zero;
            rectTran.localScale         = Vector3.one;

            break;

        case RectAnchor.LowerRight:
            rectTran.pivot              = Vector2.right;
            rectTran.anchorMin          = Vector2.right;
            rectTran.anchorMax          = Vector2.right;
            rectTran.anchoredPosition3D = Vector3.right * posX + Vector3.up * posY + Vector3.zero;
            rectTran.localScale         = Vector3.one;

            break;

        default:
            break;
        }
    }
 public void SetAnchor(Graphic graphic, RectAnchor anchor, float posX = 0, float posY = 0)
 {
     SetAnchor(graphic.GetComponent <RectTransform>(), anchor, posX, posY);
 }