コード例 #1
0
        /// <summary>Displays the tooltip.</summary>
        /// <remarks>
        /// This method first waits a couple frames before sizing and positioning the tooltip.
        /// This is necessary in order to get an accurate preferredWidth property of the dynamic text field.
        /// </remarks>
        public IEnumerator Show(TooltipTrigger trigger)
        {
            if (trigger.tooltipStyle == null)
            {
                Debug.LogWarning("TooltipTrigger \"" + trigger.name + "\" has no associated TooltipStyle. Cannot show tooltip.");
                yield break;
            }

            Tooltip tooltip       = trigger.Tooltip;
            Image   tooltipBkgImg = tooltip.BackgroundImage;

            // Move the tooltip to the No Angle container if it should never be rotated.
            if (tooltip.NeverRotate)
            {
                tooltip.GameObject.transform.SetParent(TooltipContainerNoAngle.transform, false);
            }

            // Replace dynamic image placeholders with the correct images.
            if (trigger.dynamicImageFields != null)
            {
                for (int i = 0; i < trigger.dynamicImageFields.Count; i++)
                {
                    for (int j = 0; j < tooltip.ImageFields.Count; j++)
                    {
                        if (tooltip.ImageFields[j].Name == trigger.dynamicImageFields[i].name)
                        {
                            if (trigger.dynamicImageFields[i].replacementSprite == null)
                            {
                                tooltip.ImageFields[j].Image.sprite = tooltip.ImageFields[j].Original;
                            }
                            else
                            {
                                tooltip.ImageFields[j].Image.sprite = trigger.dynamicImageFields[i].replacementSprite;
                            }
                        }
                    }
                }
            }

            // Toggle dynamic sections on or off.
            if (trigger.dynamicSectionFields != null)
            {
                for (int i = 0; i < trigger.dynamicSectionFields.Count; i++)
                {
                    for (int j = 0; j < tooltip.SectionFields.Count; j++)
                    {
                        if (tooltip.SectionFields[j].Name == trigger.dynamicSectionFields[i].name)
                        {
                            tooltip.SectionFields[j].GameObject.SetActive(trigger.dynamicSectionFields[i].isOn);
                        }
                    }
                }
            }

            // Wait for 2 frames so we get an accurate PreferredWidth on the Text component.
            yield return(WaitFor.Frames(2));

            // Get the parent canvas for this tooltip trigger.
            GuiCanvas = trigger.GetComponentInParent <Canvas>();

            // If no parent canvas is found for the trigger object, use the main canvas.
            if (GuiCanvas == null)
            {
                GuiCanvas = CanvasHelper.GetRootCanvas();
            }

            // Parent the tooltip container under the correct canvas.
            TooltipContainer.transform.SetParent(GuiCanvas.transform, false);

            // Set the position of the tooltip.
            tooltip.SetPosition(trigger, GuiCanvas, guiCamera);

            // Set the tint color of the tooltip panel and tips.
            tooltipBkgImg.color = trigger.backgroundTint;

            // If this is a blocking tooltip, assign it as such.
            if (tooltip.IsBlocking)
            {
                BlockingTooltip = tooltip;
            }

            // Display the tooltip.
            tooltip.Display(fadeDuration);
        }