private void Initialize() { if (isInitialized || UTooltipManager.Instance == null) { return; } RectTransform = gameObject.GetComponent <RectTransform>(); if (tooltipStyle != null) { //检测当前ToolTipsStyle是否已经创建,是则直接用,否则创建一个 if (!UTooltipManager.Instance.Tooltips.ContainsKey(tooltipStyle.TooltipID)) { TooltipStyle ttStyle = Instantiate(tooltipStyle); ttStyle.name = tooltipStyle.name; ttStyle.transform.SetParent(UTooltipManager.Instance.TooltipContainer.transform, false); Tooltip newTooltip = new Tooltip() { GameObject = ttStyle.gameObject }; newTooltip.Initialize(); newTooltip.Deactivate(); UTooltipManager.Instance.Tooltips.Add(tooltipStyle.TooltipID, newTooltip); } Tooltip = UTooltipManager.Instance.Tooltips[tooltipStyle.TooltipID]; } isInitialized = true; UTooltipManager.Instance.TooltipMgrInitEvent.RemoveListener(Initialize); }
public override void OnInspectorGUI() { base.OnInspectorGUI(); serializedObject.Update(); TooltipStyle tooltipstyle = target as TooltipStyle; tooltipID.intValue = (int)((USpeedUI.ETooltipStyle)EditorGUILayout.EnumPopup(new GUIContent("类型ID"), (USpeedUI.ETooltipStyle)tooltipID.intValue)); if (GUI.changed) { EditorUtility.SetDirty(tooltipstyle); } serializedObject.ApplyModifiedProperties(); }
/// <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; }