public void setVerticalNearSideInEditor(VERTICAL_PADDING side) { mVerticalNearSide = side; setAnchorMode(mAnchorMode); }
// 停靠父节点的指定边界,并且大小不改变 protected void setToPaddingParentSide(HORIZONTAL_PADDING horizontalSide, VERTICAL_PADDING verticalSide, bool relativeDistance) { Vector3[] sides = null; Vector2 pos = transform.localPosition; GameObject parent = transform.parent.gameObject; Vector2 parentSize = parent.GetComponent <RectTransform>().rect.size; if (parent != null) { sides = getSides(parent); WidgetUtility.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.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.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.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.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.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.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); } }