/// <summary> /// Get anchored position of RectTransform apply mirror. /// </summary> /// <param name="rect"></param> /// <param name="mode"></param> /// <param name="anchorMin"></param> /// <param name="anchorMax"></param> /// <param name="pivot"></param> /// <returns></returns> public static Vector2 GetAnchoredPosition(this RectTransform rect, UIMirrorMode mode, out Vector2 anchorMin, out Vector2 anchorMax, out Vector2 pivot) { anchorMin = rect.anchorMin; anchorMax = rect.anchorMax; pivot = rect.pivot; var h = 1; var v = 1; switch (mode) { case UIMirrorMode.Horizontal: anchorMin.x = 1 - anchorMin.x; anchorMax.x = 1 - anchorMax.x; pivot.x = 1 - pivot.x; h = -1; break; case UIMirrorMode.Vertical: anchorMin.y = 1 - anchorMin.y; anchorMax.y = 1 - anchorMax.y; pivot.y = 1 - pivot.y; v = -1; break; case UIMirrorMode.Both: anchorMin = Vector2.one - anchorMin; anchorMax = Vector2.one - anchorMax; pivot = Vector2.one - pivot; h = v = -1; break; } return(new Vector2(rect.anchoredPosition.x * h, rect.anchoredPosition.y * v)); }
/// <summary> /// Set position of RectTransform apply mirror. /// </summary> /// <param name="rect"></param> /// <param name="mode"></param> public static void SetPosition(this RectTransform rect, UIMirrorMode mode) { var anchoredPos = GetAnchoredPosition(rect, mode, out Vector2 anchorMin, out Vector2 anchorMax, out Vector2 pivot); rect.anchorMin = anchorMin; rect.anchorMax = anchorMax; rect.pivot = pivot; rect.anchoredPosition = anchoredPos; }
/// <summary> /// Set position of RectTransform apply mirror. /// </summary> /// <param name="mode"></param> public void SetPosition(UIMirrorMode mode) { RectTransform.SetPosition(mode); }
/// <summary> /// Get anchored position of RectTransform apply mirror. /// </summary> /// <param name="mode"></param> /// <param name="anchorMin"></param> /// <param name="anchorMax"></param> /// <param name="pivot"></param> /// <returns></returns> public Vector2 GetAnchoredPosition(UIMirrorMode mode, out Vector2 anchorMin, out Vector2 anchorMax, out Vector2 pivot) { return(RectTransform.GetAnchoredPosition(mode, out anchorMin, out anchorMax, out pivot)); }