Example #1
0
 public void setVerticalNearSideInEditor(VERTICAL_PADDING_SIDE side)
 {
     mVerticalNearSide = side;
     setAnchorMode(mAnchorMode);
 }
Example #2
0
    // 停靠父节点的指定边界,并且大小不改变
    protected void setToPaddingParentSide(HORIZONTAL_PADDING_SIDE horizontalSide, VERTICAL_PADDING_SIDE verticalSide, bool relativeDistance)
    {
        Vector3[]  sides      = null;
        Vector2    pos        = transform.localPosition;
        Vector2    parentSize = Vector2.zero;
        GameObject parent     = null;

        if (ReflectionUtility.isNGUI(gameObject))
        {
#if USE_NGUI
            UIRect parentRect = ReflectionUtility.findNGUIParentRect(gameObject);
            if (parentRect != null)
            {
                parent     = parentRect.gameObject;
                parentSize = ReflectionUtility.getNGUIRectSize(parentRect);
            }
            else
            {
                sides = getSides(null);
                for (int i = 0; i < 4; ++i)
                {
                    mAnchorPoint[i].setRelative(0.0f);
                    mAnchorPoint[i].setAbsolute((i == 0 || i == 2) ? sides[i].x : sides[i].y);
                }
                parentSize.x = Mathf.Abs(sides[0].x) * 2.0f;
                parentSize.y = Mathf.Abs(sides[1].y) * 2.0f;
            }
#endif
        }
        else
        {
            parent     = transform.parent.gameObject;
            parentSize = parent.GetComponent <RectTransform>().rect.size;
        }
        if (parent != null)
        {
            sides = getSides(parent);
            ReflectionUtility.getParentSides(parent, mParentSides);
        }
        int count = mDistanceToBoard.Length;
        for (int i = 0; i < count; ++i)
        {
            mDistanceToBoard[i].setRelative(0.0f);
            mDistanceToBoard[i].setAbsolute(0.0f);
        }
        // 相对于左右边界
        if (horizontalSide == HORIZONTAL_PADDING_SIDE.HPS_LEFT)
        {
            if (relativeDistance)
            {
                mDistanceToBoard[0].mRelative = Mathf.Abs(sides[0].x / mParentSides[0].x);
                mDistanceToBoard[0].setAbsolute(0.0f);
            }
            else
            {
                mDistanceToBoard[0].mRelative = 1.0f;
                mDistanceToBoard[0].setAbsolute(sides[0].x - mParentSides[0].x);
            }
        }
        else if (horizontalSide == HORIZONTAL_PADDING_SIDE.HPS_RIGHT)
        {
            if (relativeDistance)
            {
                mDistanceToBoard[2].mRelative = Mathf.Abs(sides[2].x / mParentSides[2].x);
                mDistanceToBoard[2].setAbsolute(0.0f);
            }
            else
            {
                mDistanceToBoard[2].mRelative = 1.0f;
                mDistanceToBoard[2].setAbsolute(sides[2].x - mParentSides[2].x);
            }
        }
        else if (horizontalSide == HORIZONTAL_PADDING_SIDE.HPS_CENTER)
        {
            if (relativeDistance)
            {
                mHorizontalPositionRelative = pos.x / (parentSize.x * 0.5f);
                mHorizontalPositionAbsolute = 0;
            }
            else
            {
                mHorizontalPositionRelative = 0.0f;
                mHorizontalPositionAbsolute = (int)(pos.x + 0.5f * Mathf.Sign(pos.x));
            }
        }
        if (verticalSide == VERTICAL_PADDING_SIDE.VPS_TOP)
        {
            if (relativeDistance)
            {
                mDistanceToBoard[1].mRelative = Mathf.Abs(sides[1].y / mParentSides[1].y);
                mDistanceToBoard[1].setAbsolute(0.0f);
            }
            else
            {
                mDistanceToBoard[1].mRelative = 1.0f;
                mDistanceToBoard[1].setAbsolute(sides[1].y - mParentSides[1].y);
            }
        }
        else if (verticalSide == VERTICAL_PADDING_SIDE.VPS_BOTTOM)
        {
            if (relativeDistance)
            {
                mDistanceToBoard[3].mRelative = Mathf.Abs(sides[3].y / mParentSides[3].y);
                mDistanceToBoard[3].setAbsolute(0.0f);
            }
            else
            {
                mDistanceToBoard[3].mRelative = 1.0f;
                mDistanceToBoard[3].setAbsolute(sides[3].y - mParentSides[3].y);
            }
        }
        else if (verticalSide == VERTICAL_PADDING_SIDE.VPS_CENTER)
        {
            if (relativeDistance)
            {
                mVerticalPositionRelative = pos.y / (parentSize.y * 0.5f);
                mVerticalPositionAbsolute = 0;
            }
            else
            {
                mVerticalPositionRelative = 0.0f;
                mVerticalPositionAbsolute = (int)(pos.y + 0.5f * Mathf.Sign(pos.y));
            }
        }
        for (int i = 0; i < 4; ++i)
        {
            mAnchorPoint[i].setRelative(0.0f);
            mAnchorPoint[i].setAbsolute(0.0f);
        }
    }