public UPopupMenuUpdateParam(Transform _tfTarget = null, Camera _camUI = null, Canvas _canvasRoot = null, TipPosition _eTipPostion = TipPosition.MouseTopRightCorner, bool _bOverflowCheck = true, Sprite _sprModalSprite = null, Color?_colorModalColor = null, Transform _tfPopupView = null, bool _bUseModal = false, UnityAction _actionModalCilck = null) { PopupTarget = _tfTarget; UICamera = _camUI; RootCanvas = _canvasRoot; PopupTipPostion = _eTipPostion; PopupOverflowCheck = _bOverflowCheck; PopupModalSprite = _sprModalSprite; PopupModalColor = _colorModalColor; PopupView = _tfPopupView; IsModalUsed = _bUseModal; ModalClickAction = _actionModalCilck; }
/// <summary> /// 不带图标悬浮提示 /// </summary> /// <param name="Owner">关联控件</param> /// <param name="text">提示文本</param> /// <param name="title">提示标题</param> /// <param name="IsBallon">是否气泡</param> /// <param name="position">显示位置</param> /// <param name="width">提示宽度</param> public void Show(Control Owner, string text, string title, bool IsBallon, TipPosition position, int width) { try { if (!wsnToolTip.IsVisible()) { Reset(); pOwner = Owner.Handle; wsnToolTip.BallonStyle = IsBallon; wsnToolTip.UseVisualStyle = true; wsnToolTip.MultiLine = true; wsnToolTip.MaximumWidth = width; wsnToolTip.Opacity = 0.85F; wsnToolTip.CloseButton = false; wsnToolTip.ShowAlways = true; wsnToolTip.AutoPopDelay = 5000; wsnToolTip.Position = position; if (IsBallon) { wsnToolTip.CustomStyle = TipStyle.Gradient; wsnToolTip.GradientType = GradientStyle.VerticalTube; wsnToolTip.GradientStartColor = Color.White; wsnToolTip.GradientEndColor = Color.FromArgb(0xC0D8DD); } wsnToolTip.SetToolTip(Owner, text); if (title != null) { wsnToolTip.SetTipTitle(pOwner, title); } } } catch { throw; } }
/// <summary> /// 带默认图标悬浮提示 /// </summary> /// <param name="Owner">关联控件</param> /// <param name="icon">OsIcon默认图标</param> /// <param name="text">提示文本</param> /// <param name="title">提示标题</param> /// <param name="IsBallon">是否气泡</param> /// <param name="position">显示位置</param> /// <param name="width">提示宽度</param> public void Show(Control Owner, OsIcon icon, string text, string title, bool IsBallon, TipPosition position, int width) { try { if (!wsnToolTip.IsVisible()) { Reset(); pOwner = Owner.Handle; wsnToolTip.BallonStyle = IsBallon; wsnToolTip.UseVisualStyle = false; wsnToolTip.CloseButton = false; wsnToolTip.MultiLine = true; wsnToolTip.MaximumWidth = width; wsnToolTip.SetToolTip(Owner, text); if (title != null) { wsnToolTip.SetTipTitle(title, icon); } } } catch { throw; } }
public void Init(string text, TipPosition tipPosition, float x, float y, float width = 320, bool closeOnInputCatcherClick = false) { if (gameObject.activeSelf) { gameObject.SetActive(false); } this.tipLeft.gameObject.SetActive(tipPosition == TipPosition.LEFT); this.tipRight.gameObject.SetActive(tipPosition == TipPosition.RIGHT); this.tipTop.gameObject.SetActive(tipPosition == TipPosition.TOP || tipPosition == TipPosition.TOP_LEFT || tipPosition == TipPosition.TOP_RIGHT); this.tipBottom.gameObject.SetActive(tipPosition == TipPosition.BOTTOM || tipPosition == TipPosition.BOTTOM_LEFT || tipPosition == TipPosition.BOTTOM_RIGHT); rectTransform = GetComponent <RectTransform>(); rectTransform.sizeDelta = new Vector2(width, 0); this.bubbleText.text = text; switch (tipPosition) { case TipPosition.TOP: rectTransform.pivot = new Vector2(0.5f, 1.0f); tipTop.rectTransform.anchoredPosition = new Vector3(0.0f, tipTop.rectTransform.localPosition.y, tipTop.rectTransform.localPosition.z); break; case TipPosition.TOP_RIGHT: rectTransform.pivot = new Vector2(0.75f, 1.0f); tipTop.rectTransform.anchoredPosition = new Vector3(width / 4.0f, tipTop.rectTransform.localPosition.y, tipTop.rectTransform.localPosition.z); break; case TipPosition.TOP_LEFT: rectTransform.pivot = new Vector2(0.25f, 1.0f); tipTop.rectTransform.anchoredPosition = new Vector3(width / -4.0f, tipTop.rectTransform.localPosition.y, tipTop.rectTransform.localPosition.z); break; case TipPosition.BOTTOM: rectTransform.pivot = new Vector2(0.5f, 0.0f); tipBottom.rectTransform.anchoredPosition = new Vector3(0.0f, tipBottom.rectTransform.localPosition.y, tipBottom.rectTransform.localPosition.z); break; case TipPosition.BOTTOM_RIGHT: rectTransform.pivot = new Vector2(0.75f, 0.0f); tipBottom.rectTransform.anchoredPosition = new Vector3(width / 4.0f, tipBottom.rectTransform.localPosition.y, tipBottom.rectTransform.localPosition.z); break; case TipPosition.BOTTOM_LEFT: rectTransform.pivot = new Vector2(0.25f, 0.0f); tipBottom.rectTransform.anchoredPosition = new Vector3(width / -4.0f, tipBottom.rectTransform.localPosition.y, tipBottom.rectTransform.localPosition.z); break; case TipPosition.LEFT: rectTransform.pivot = new Vector2(0.0f, 0.5f); break; case TipPosition.RIGHT: rectTransform.pivot = new Vector2(1.0f, 0.5f); break; default: break; } rectTransform.position = new Vector3(x, y); gameObject.SetActive(true); if (inputCatcher) { inputCatcher.SetActive(closeOnInputCatcherClick); } }
/// <summary>Suggests a better tooltip position, based on where the tooltip is overflowing and the previously-desired position.</summary> /// <param name="fromPosition">The previously-desired tip position.</param> public TipPosition SuggestNewPosition(TipPosition fromPosition) { bool useMousePos = fromPosition == TipPosition.MouseBottomLeftCorner || fromPosition == TipPosition.MouseTopLeftCorner || fromPosition == TipPosition.MouseBottomRightCorner || fromPosition == TipPosition.MouseTopRightCorner || fromPosition == TipPosition.MouseTopMiddle || fromPosition == TipPosition.MouseLeftMiddle || fromPosition == TipPosition.MouseRightMiddle || fromPosition == TipPosition.MouseBottomMiddle; switch (fromPosition) // desired tip position { case TipPosition.TopRightCorner: case TipPosition.MouseTopRightCorner: if (TopEdge && RightEdge) // flip to opposite corner. { return(useMousePos ? TipPosition.MouseBottomLeftCorner : TipPosition.BottomLeftCorner); } if (TopEdge) // flip to bottom. { return(useMousePos ? TipPosition.MouseBottomRightCorner : TipPosition.BottomRightCorner); } if (RightEdge) // flip to left. { return(useMousePos ? TipPosition.MouseTopLeftCorner : TipPosition.TopLeftCorner); } break; case TipPosition.BottomRightCorner: case TipPosition.MouseBottomRightCorner: if (BottomEdge && RightEdge) // flip to opposite corner. { return(useMousePos ? TipPosition.MouseTopLeftCorner : TipPosition.TopLeftCorner); } if (BottomEdge) // flip to top. { return(useMousePos ? TipPosition.MouseTopRightCorner : TipPosition.TopRightCorner); } if (RightEdge) // flip to left. { return(useMousePos ? TipPosition.MouseBottomLeftCorner : TipPosition.BottomLeftCorner); } break; case TipPosition.TopLeftCorner: case TipPosition.MouseTopLeftCorner: if (TopEdge && LeftEdge) // flip to opposite corner. { return(useMousePos ? TipPosition.MouseBottomRightCorner : TipPosition.BottomRightCorner); } if (TopEdge) // flip to bottom. { return(useMousePos ? TipPosition.MouseBottomLeftCorner : TipPosition.BottomLeftCorner); } if (LeftEdge) // flip to right. { return(useMousePos ? TipPosition.MouseTopRightCorner : TipPosition.TopRightCorner); } break; case TipPosition.BottomLeftCorner: case TipPosition.MouseBottomLeftCorner: if (BottomEdge && LeftEdge) // flip to opposite corner. { return(useMousePos ? TipPosition.MouseTopRightCorner : TipPosition.TopRightCorner); } if (BottomEdge) // flip to top. { return(useMousePos ? TipPosition.MouseTopLeftCorner : TipPosition.TopLeftCorner); } if (LeftEdge) // flip to right. { return(useMousePos ? TipPosition.MouseBottomRightCorner : TipPosition.BottomRightCorner); } break; case TipPosition.TopMiddle: case TipPosition.MouseTopMiddle: if (TopEdge && RightEdge) // flip to opposite corner. { return(useMousePos ? TipPosition.MouseBottomLeftCorner : TipPosition.BottomLeftCorner); } if (TopEdge && LeftEdge) // flip to opposite corner. { return(useMousePos ? TipPosition.MouseBottomRightCorner : TipPosition.BottomRightCorner); } if (TopEdge) // flip to bottom. { return(useMousePos ? TipPosition.MouseBottomMiddle : TipPosition.BottomMiddle); } if (RightEdge) // flip to left. { return(useMousePos ? TipPosition.MouseLeftMiddle : TipPosition.LeftMiddle); } if (LeftEdge) // flip to right. { return(useMousePos ? TipPosition.MouseRightMiddle : TipPosition.RightMiddle); } break; case TipPosition.BottomMiddle: case TipPosition.MouseBottomMiddle: if (BottomEdge && RightEdge) // flip to opposite corner. { return(useMousePos ? TipPosition.MouseTopLeftCorner : TipPosition.TopLeftCorner); } if (BottomEdge && LeftEdge) // flip to opposite corner. { return(useMousePos ? TipPosition.MouseTopRightCorner : TipPosition.TopRightCorner); } if (BottomEdge) // flip to top. { return(useMousePos ? TipPosition.MouseTopMiddle : TipPosition.TopMiddle); } if (RightEdge) // flip to left. { return(useMousePos ? TipPosition.MouseLeftMiddle : TipPosition.LeftMiddle); } if (LeftEdge) // flip to right. { return(useMousePos ? TipPosition.MouseRightMiddle : TipPosition.RightMiddle); } break; case TipPosition.LeftMiddle: case TipPosition.MouseLeftMiddle: if (TopEdge && LeftEdge) // flip to opposite corner. { return(useMousePos ? TipPosition.MouseBottomRightCorner : TipPosition.BottomRightCorner); } if (BottomEdge && LeftEdge) // flip to opposite corner. { return(useMousePos ? TipPosition.MouseTopRightCorner : TipPosition.TopRightCorner); } if (TopEdge) // flip to bottom. { return(useMousePos ? TipPosition.MouseBottomMiddle : TipPosition.BottomMiddle); } if (BottomEdge) // flip to top. { return(useMousePos ? TipPosition.MouseTopMiddle : TipPosition.TopMiddle); } if (LeftEdge) // flip to right. { return(useMousePos ? TipPosition.MouseRightMiddle : TipPosition.RightMiddle); } break; case TipPosition.RightMiddle: case TipPosition.MouseRightMiddle: if (TopEdge && RightEdge) // flip to opposite corner. { return(useMousePos ? TipPosition.MouseBottomLeftCorner : TipPosition.BottomLeftCorner); } if (BottomEdge && RightEdge) // flip to opposite corner. { return(useMousePos ? TipPosition.MouseTopLeftCorner : TipPosition.TopLeftCorner); } if (TopEdge) // flip to bottom. { return(useMousePos ? TipPosition.MouseBottomMiddle : TipPosition.BottomMiddle); } if (BottomEdge) // flip to top. { return(useMousePos ? TipPosition.MouseTopMiddle : TipPosition.TopMiddle); } if (RightEdge) // flip to left. { return(useMousePos ? TipPosition.MouseLeftMiddle : TipPosition.LeftMiddle); } break; } return(fromPosition); }
public static void SetPosition(TipPosition tipPosition, Vector3[] targetRectCorners, RectTransform targetRectTrans, Canvas canvas, Camera camera, ref Vector3 resultPos) { // Tooltip Trigger Corners: // 0 = bottom left // 1 = top left // 2 = top right // 3 = bottom right Vector3 pos = Vector3.zero; Vector2 newPivot = Vector2.zero; Vector3 offsetVector = Vector3.zero; bool useMousePos = tipPosition == TipPosition.MouseBottomLeftCorner || tipPosition == TipPosition.MouseTopLeftCorner || tipPosition == TipPosition.MouseBottomRightCorner || tipPosition == TipPosition.MouseTopRightCorner || tipPosition == TipPosition.MouseTopMiddle || tipPosition == TipPosition.MouseLeftMiddle || tipPosition == TipPosition.MouseRightMiddle || tipPosition == TipPosition.MouseBottomMiddle; Vector3 mousePos = Input.mousePosition; if (canvas.renderMode == RenderMode.ScreenSpaceCamera || canvas.renderMode == RenderMode.WorldSpace) { mousePos.z = canvas.planeDistance; mousePos = camera.ScreenToWorldPoint(mousePos); } switch (tipPosition) { case TipPosition.TopRightCorner: case TipPosition.MouseTopRightCorner: pos = useMousePos ? mousePos : targetRectCorners[2]; newPivot = new Vector2(0, 0); break; case TipPosition.BottomRightCorner: case TipPosition.MouseBottomRightCorner: pos = useMousePos ? mousePos : targetRectCorners[3]; newPivot = new Vector2(0, 1); break; case TipPosition.TopLeftCorner: case TipPosition.MouseTopLeftCorner: pos = useMousePos ? mousePos : targetRectCorners[1]; newPivot = new Vector2(1, 0); break; case TipPosition.BottomLeftCorner: case TipPosition.MouseBottomLeftCorner: pos = useMousePos ? mousePos : targetRectCorners[0]; newPivot = new Vector2(1, 1); break; case TipPosition.TopMiddle: case TipPosition.MouseTopMiddle: pos = useMousePos ? mousePos : targetRectCorners[1] + (targetRectCorners[2] - targetRectCorners[1]) / 2; newPivot = new Vector2(.5f, 0); break; case TipPosition.BottomMiddle: case TipPosition.MouseBottomMiddle: pos = useMousePos ? mousePos : targetRectCorners[0] + (targetRectCorners[3] - targetRectCorners[0]) / 2; newPivot = new Vector2(.5f, 1); break; case TipPosition.LeftMiddle: case TipPosition.MouseLeftMiddle: pos = useMousePos ? mousePos : targetRectCorners[0] + (targetRectCorners[1] - targetRectCorners[0]) / 2; newPivot = new Vector2(1, .5f); break; case TipPosition.RightMiddle: case TipPosition.MouseRightMiddle: pos = useMousePos ? mousePos : targetRectCorners[3] + (targetRectCorners[2] - targetRectCorners[3]) / 2; newPivot = new Vector2(0, .5f); break; } resultPos = pos; targetRectTrans.pivot = newPivot; }
/// <summary>This method does the heavy lifting for setting the correct tooltip position.</summary> private static void SetPosition(this Tooltip tooltip, TipPosition tipPosition, TooltipStyle style, Vector3[] triggerCorners, Image bkgImage, RectTransform tooltipRectTrans, Canvas canvas, Camera camera) { // Tooltip Trigger Corners: // 0 = bottom left // 1 = top left // 2 = top right // 3 = bottom right Vector3 pos = Vector3.zero; Vector3 offsetVector = Vector3.zero; switch (tipPosition) { case TipPosition.TopRightCorner: case TipPosition.MouseTopRightCorner: offsetVector = new Vector3(-1 * style.tipOffset, -1 * style.tipOffset); bkgImage.sprite = style.bottomLeftCorner; break; case TipPosition.BottomRightCorner: case TipPosition.MouseBottomRightCorner: offsetVector = new Vector3(-1 * style.tipOffset, style.tipOffset); bkgImage.sprite = style.topLeftCorner; break; case TipPosition.TopLeftCorner: case TipPosition.MouseTopLeftCorner: offsetVector = new Vector3(style.tipOffset, -1 * style.tipOffset); bkgImage.sprite = style.bottomRightCorner; break; case TipPosition.BottomLeftCorner: case TipPosition.MouseBottomLeftCorner: offsetVector = new Vector3(style.tipOffset, style.tipOffset); bkgImage.sprite = style.topRightCorner; break; case TipPosition.TopMiddle: case TipPosition.MouseTopMiddle: offsetVector = new Vector3(0, -1 * style.tipOffset); bkgImage.sprite = style.topMiddle; break; case TipPosition.BottomMiddle: case TipPosition.MouseBottomMiddle: offsetVector = new Vector3(0, style.tipOffset); bkgImage.sprite = style.bottomMiddle; break; case TipPosition.LeftMiddle: case TipPosition.MouseLeftMiddle: offsetVector = new Vector3(style.tipOffset, 0); bkgImage.sprite = style.leftMiddle; break; case TipPosition.RightMiddle: case TipPosition.MouseRightMiddle: offsetVector = new Vector3(-1 * style.tipOffset, 0); bkgImage.sprite = style.rightMiddle; break; } SetPosition(tipPosition, triggerCorners, tooltipRectTrans, canvas, camera, ref pos); tooltip.GameObject.transform.position = pos; tooltipRectTrans.anchoredPosition += (Vector2)offsetVector; pos = tooltipRectTrans.anchoredPosition3D; pos.z = 0; tooltipRectTrans.anchoredPosition3D = pos; }
private static void SetTooltipPosition(TipPosition tipPosition, GameObject tooltipObj, TooltipStyle style, Vector3[] triggerCorners, Image tooltipImage, RectTransform tooltipRectTrans, bool useMousePosition) { Vector3 pos = Vector3.zero; Vector3 offsetVector; switch (tipPosition) { case TipPosition.TopRightCorner: case TipPosition.MouseTopRightCorner: offsetVector = new Vector3(-1 * style.tipOffset, -1 * style.tipOffset); if (useMousePosition) { pos = Input.mousePosition + offsetVector; } else { pos = triggerCorners[2] + offsetVector; } tooltipRectTrans.pivot = new Vector2(0, 0); tooltipImage.sprite = style.bottomLeftCorner; break; case TipPosition.BottomRightCorner: case TipPosition.MouseBottomRightCorner: offsetVector = new Vector3(-1 * style.tipOffset, style.tipOffset); if (useMousePosition) { pos = Input.mousePosition + offsetVector; } else { pos = triggerCorners[3] + offsetVector; } tooltipRectTrans.pivot = new Vector2(0, 1); tooltipImage.sprite = style.topLeftCorner; break; case TipPosition.TopLeftCorner: case TipPosition.MouseTopLeftCorner: offsetVector = new Vector3(style.tipOffset, -1 * style.tipOffset); if (useMousePosition) { pos = Input.mousePosition + offsetVector; } else { pos = triggerCorners[1] + offsetVector; } tooltipRectTrans.pivot = new Vector2(1, 0); tooltipImage.sprite = style.bottomRightCorner; break; case TipPosition.BottomLeftCorner: case TipPosition.MouseBottomLeftCorner: offsetVector = new Vector3(style.tipOffset, style.tipOffset); if (useMousePosition) { pos = Input.mousePosition + offsetVector; } else { pos = triggerCorners[0] + offsetVector; } tooltipRectTrans.pivot = new Vector2(1, 1); tooltipImage.sprite = style.topRightCorner; break; } // Set the position of the tooltip container. tooltipObj.transform.position = pos; }
private static void SetTooltipPosition(TipPosition tipPosition, GameObject tooltipObj, TooltipStyle style, Vector3[] triggerCorners, Image tooltipImage, RectTransform tooltipRectTrans, bool useMousePosition) { Vector3 pos = Vector3.zero; Vector3 offsetVector; switch (tipPosition) { case TipPosition.TopRightCorner: case TipPosition.MouseTopRightCorner: offsetVector = new Vector3(-1 * style.tipOffset, -1 * style.tipOffset); if (useMousePosition) pos = Input.mousePosition + offsetVector; else pos = triggerCorners[2] + offsetVector; tooltipRectTrans.pivot = new Vector2(0, 0); tooltipImage.sprite = style.bottomLeftCorner; break; case TipPosition.BottomRightCorner: case TipPosition.MouseBottomRightCorner: offsetVector = new Vector3(-1 * style.tipOffset, style.tipOffset); if (useMousePosition) pos = Input.mousePosition + offsetVector; else pos = triggerCorners[3] + offsetVector; tooltipRectTrans.pivot = new Vector2(0, 1); tooltipImage.sprite = style.topLeftCorner; break; case TipPosition.TopLeftCorner: case TipPosition.MouseTopLeftCorner: offsetVector = new Vector3(style.tipOffset, -1 * style.tipOffset); if (useMousePosition) pos = Input.mousePosition + offsetVector; else pos = triggerCorners[1] + offsetVector; tooltipRectTrans.pivot = new Vector2(1, 0); tooltipImage.sprite = style.bottomRightCorner; break; case TipPosition.BottomLeftCorner: case TipPosition.MouseBottomLeftCorner: offsetVector = new Vector3(style.tipOffset, style.tipOffset); if (useMousePosition) pos = Input.mousePosition + offsetVector; else pos = triggerCorners[0] + offsetVector; tooltipRectTrans.pivot = new Vector2(1, 1); tooltipImage.sprite = style.topRightCorner; break; } // Set the position of the tooltip container. tooltipObj.transform.position = pos; }
/// <summary>This method does the heavy lifting for setting the correct tooltip position.</summary> private static void SetPosition(this Tooltip tooltip, TipPosition tipPosition, TooltipStyle style, Vector3[] triggerCorners, Image bkgImage, RectTransform tooltipRectTrans, Canvas canvas, Camera camera) { // Tooltip Trigger Corners: // 0 = bottom left // 1 = top left // 2 = top right // 3 = bottom right Vector3 pos = Vector3.zero; Vector3 offsetVector = Vector3.zero; bool useMousePos = tipPosition == TipPosition.MouseBottomLeftCorner || tipPosition == TipPosition.MouseTopLeftCorner || tipPosition == TipPosition.MouseBottomRightCorner || tipPosition == TipPosition.MouseTopRightCorner || tipPosition == TipPosition.MouseTopMiddle || tipPosition == TipPosition.MouseLeftMiddle || tipPosition == TipPosition.MouseRightMiddle || tipPosition == TipPosition.MouseBottomMiddle; Vector3 mousePos = Input.mousePosition; if (canvas.renderMode == RenderMode.ScreenSpaceCamera) { mousePos.z = canvas.planeDistance; mousePos = camera.ScreenToWorldPoint(mousePos); } switch (tipPosition) { case TipPosition.TopRightCorner: case TipPosition.MouseTopRightCorner: offsetVector = new Vector3(-1 * style.tipOffset, -1 * style.tipOffset); pos = useMousePos ? mousePos : triggerCorners[2]; tooltipRectTrans.pivot = new Vector2(0, 0); bkgImage.sprite = style.bottomLeftCorner; break; case TipPosition.BottomRightCorner: case TipPosition.MouseBottomRightCorner: offsetVector = new Vector3(-1 * style.tipOffset, style.tipOffset); pos = useMousePos ? mousePos : triggerCorners[3]; tooltipRectTrans.pivot = new Vector2(0, 1); bkgImage.sprite = style.topLeftCorner; break; case TipPosition.TopLeftCorner: case TipPosition.MouseTopLeftCorner: offsetVector = new Vector3(style.tipOffset, -1 * style.tipOffset); pos = useMousePos ? mousePos : triggerCorners[1]; tooltipRectTrans.pivot = new Vector2(1, 0); bkgImage.sprite = style.bottomRightCorner; break; case TipPosition.BottomLeftCorner: case TipPosition.MouseBottomLeftCorner: offsetVector = new Vector3(style.tipOffset, style.tipOffset); pos = useMousePos ? mousePos : triggerCorners[0]; tooltipRectTrans.pivot = new Vector2(1, 1); bkgImage.sprite = style.topRightCorner; break; case TipPosition.TopMiddle: case TipPosition.MouseTopMiddle: offsetVector = new Vector3(0, -1 * style.tipOffset); pos = useMousePos ? mousePos : triggerCorners[1] + (triggerCorners[2] - triggerCorners[1]) / 2; tooltipRectTrans.pivot = new Vector2(.5f, 0); bkgImage.sprite = style.topMiddle; break; case TipPosition.BottomMiddle: case TipPosition.MouseBottomMiddle: offsetVector = new Vector3(0, style.tipOffset); pos = useMousePos ? mousePos : triggerCorners[0] + (triggerCorners[3] - triggerCorners[0]) / 2; tooltipRectTrans.pivot = new Vector2(.5f, 1); bkgImage.sprite = style.bottomMiddle; break; case TipPosition.LeftMiddle: case TipPosition.MouseLeftMiddle: offsetVector = new Vector3(style.tipOffset, 0); pos = useMousePos ? mousePos : triggerCorners[0] + (triggerCorners[1] - triggerCorners[0]) / 2; tooltipRectTrans.pivot = new Vector2(1, .5f); bkgImage.sprite = style.leftMiddle; break; case TipPosition.RightMiddle: case TipPosition.MouseRightMiddle: offsetVector = new Vector3(-1 * style.tipOffset, 0); pos = useMousePos ? mousePos : triggerCorners[3] + (triggerCorners[2] - triggerCorners[3]) / 2; tooltipRectTrans.pivot = new Vector2(0, .5f); bkgImage.sprite = style.rightMiddle; break; } tooltip.GameObject.transform.position = pos; tooltipRectTrans.anchoredPosition += (Vector2)offsetVector; }