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); }
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()); } }
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); }
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); }
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); }