6 [AddComponentMenu(
"UI/Extensions/HoverTooltip")]
17 public HorizontalLayoutGroup
hlG;
48 float currentYScaleFactor;
49 float currentXScaleFactor;
56 float tooltipRealHeight;
57 float tooltipRealWidth;
63 GUICamera = GameObject.Find(
"GUICamera").GetComponent<Camera>();
64 GUIMode = this.transform.parent.parent.GetComponent<Canvas>().renderMode;
76 this.transform.parent.gameObject.SetActive(
false);
99 string tooltipText =
"";
101 foreach (
string newLine
in texts)
105 tooltipText += newLine;
109 tooltipText += (
"\n" + newLine);
138 Vector3 newPos = GUICamera.ScreenToViewportPoint(Input.mousePosition);
149 val = ((GUICamera.ViewportToScreenPoint(newPos).x) + (tooltipRealWidth *
bgImage.pivot.x));
152 if (val > (upperRight.x))
154 float distFromRight = upperRight.x - val;
156 if (distFromRight > (defaultXOffset * 0.75))
159 xOffSet = distFromRight;
164 xOffSet = ((defaultXOffset) - (tooltipRealWidth) * 2f);
168 Vector3 newTooltipPos =
new Vector3(GUICamera.ViewportToScreenPoint(newPos).x + xOffSet, 0f, 0f);
170 newPos.x = GUICamera.ScreenToViewportPoint(newTooltipPos).x;
175 val = ((GUICamera.ViewportToScreenPoint(newPos).x) - (tooltipRealWidth *
bgImage.pivot.x));
178 if (val < (lowerLeft.x))
180 float distFromLeft = lowerLeft.x - val;
182 if (distFromLeft < (defaultXOffset * 0.75 - tooltipRealWidth))
185 xOffSet = -distFromLeft;
190 xOffSet = ((tooltipRealWidth) * 2f);
194 Vector3 newTooltipPos =
new Vector3(GUICamera.ViewportToScreenPoint(newPos).x - xOffSet, 0f, 0f);
196 newPos.x = GUICamera.ScreenToViewportPoint(newTooltipPos).x;
201 val = ((GUICamera.ViewportToScreenPoint(newPos).y) - ((
bgImage.sizeDelta.y * currentYScaleFactor * (
bgImage.pivot.y)) - (tooltipRealHeight)));
203 if (val > (upperRight.y))
205 float distFromUpper = upperRight.y - val;
206 yOffSet = (
bgImage.sizeDelta.y * currentYScaleFactor * (
bgImage.pivot.y));
208 if (distFromUpper > (defaultYOffset * 0.75))
211 yOffSet = distFromUpper;
216 yOffSet = ((defaultYOffset) - (tooltipRealHeight) * 2f);
220 Vector3 newTooltipPos =
new Vector3(newPos.x, GUICamera.ViewportToScreenPoint(newPos).y + yOffSet, 0f);
221 newPos.y = GUICamera.ScreenToViewportPoint(newTooltipPos).y;
226 val = ((GUICamera.ViewportToScreenPoint(newPos).y) - ((
bgImage.sizeDelta.y * currentYScaleFactor * (
bgImage.pivot.y))));
229 if (val < (lowerLeft.y))
231 float distFromLower = lowerLeft.y - val;
232 yOffSet = (
bgImage.sizeDelta.y * currentYScaleFactor * (
bgImage.pivot.y));
234 if (distFromLower < (defaultYOffset * 0.75 - tooltipRealHeight))
237 yOffSet = distFromLower;
242 yOffSet = ((tooltipRealHeight) * 2f);
246 Vector3 newTooltipPos =
new Vector3(newPos.x, GUICamera.ViewportToScreenPoint(newPos).y + yOffSet, 0f);
247 newPos.y = GUICamera.ScreenToViewportPoint(newTooltipPos).y;
250 this.transform.parent.transform.position =
new Vector3(GUICamera.ViewportToWorldPoint(newPos).x, GUICamera.ViewportToWorldPoint(newPos).y, 0f);
251 this.transform.parent.gameObject.SetActive(
true);
258 if (GUIMode == RenderMode.ScreenSpaceCamera)
262 this.transform.parent.gameObject.SetActive(
false);
275 if (GUIMode == RenderMode.ScreenSpaceCamera)
291 defaultYOffset = (
bgImage.sizeDelta.y * currentYScaleFactor * (
bgImage.pivot.y));
292 defaultXOffset = (
bgImage.sizeDelta.x * currentXScaleFactor * (
bgImage.pivot.x));
294 tooltipRealHeight =
bgImage.sizeDelta.y * currentYScaleFactor;
295 tooltipRealWidth =
bgImage.sizeDelta.x * currentXScaleFactor;
306 lowerLeft = GUICamera.ViewportToScreenPoint(
new Vector3(0.0f, 0.0f, 0.0f));
307 upperRight = GUICamera.ViewportToScreenPoint(
new Vector3(1.0f, 1.0f, 0.0f));
309 currentYScaleFactor = Screen.height / this.transform.root.GetComponent<CanvasScaler>().referenceResolution.y;
310 currentXScaleFactor = Screen.width /
this.transform.root.GetComponent<CanvasScaler>().referenceResolution.x;
318 thisText.color =
new Color(textColor.r, textColor.g, textColor.b, 1f);
319 bgImageSource.color =
new Color(bgImageSource.color.r, bgImageSource.color.g, bgImageSource.color.b, 0.8f);
326 thisText.color =
new Color(textColor.r, textColor.g, textColor.b, 0f);
327 bgImageSource.color =
new Color(bgImageSource.color.r, bgImageSource.color.g, bgImageSource.color.b, 0f);
System.Drawing.Image Image
Credit Erdener Gonenc - @PixelEnvision.