/* INFINITY CODE */ /* https://infinity-code.com */ using UnityEngine; using UnityEngine.UI; namespace InfinityCode.OnlineMapsExamples { /// /// Example of how to make a tooltip using uGUI for all markers /// [AddComponentMenu("Infinity Code/Online Maps/Examples (API Usage)/uGUICustomTooltipForAllMarkersExample")] public class uGUICustomTooltipForAllMarkersExample : MonoBehaviour { /// /// Prefab of the tooltip /// public GameObject tooltipPrefab; /// /// Container for tooltip /// public Canvas container; private GameObject tooltip; private void Start() { OnlineMapsMarkerManager.CreateItem(Vector2.zero, "Marker 1"); OnlineMapsMarkerManager.CreateItem(new Vector2(1, 1), "Marker 2"); OnlineMapsMarkerManager.CreateItem(new Vector2(2, 1), "Marker 3"); OnlineMapsMarkerBase.OnMarkerDrawTooltip = delegate { }; OnlineMaps.instance.OnUpdateLate += OnUpdateLate; } private void OnUpdateLate() { OnlineMapsMarkerBase tooltipMarker = OnlineMapsTooltipDrawerBase.tooltipMarker; if (tooltipMarker != null) { if (tooltip == null) { tooltip = Instantiate(tooltipPrefab) as GameObject; (tooltip.transform as RectTransform).SetParent(container.transform); } Vector2 screenPosition = OnlineMapsControlBase.instance.GetScreenPosition(tooltipMarker.position); OnlineMapsMarker marker2D = tooltipMarker as OnlineMapsMarker; if (marker2D != null) screenPosition.y += marker2D.height; else screenPosition.y += 20; Vector2 point; Camera cam = container.renderMode == RenderMode.ScreenSpaceOverlay ? null : container.worldCamera; RectTransformUtility.ScreenPointToLocalPointInRectangle(container.transform as RectTransform, screenPosition, cam, out point); (tooltip.transform as RectTransform).localPosition = point; tooltip.GetComponentInChildren().text = tooltipMarker.label; } else { OnlineMapsUtils.Destroy(tooltip); tooltip = null; } } } }