/* INFINITY CODE 2013-2017 */ /* http://www.infinity-code.com */ using UnityEngine; using UnityEngine.UI; namespace InfinityCode.OnlineMapsExamples { /// /// Example of how to make a tooltip using uGUI for all markers /// public class uGUICustomTooltipForAllMarkersExample3 : MonoBehaviour { /// /// Prefab of the tooltip /// public GameObject tooltipPrefab; /// /// Container for tooltip /// public Canvas container; private GameObject tooltip; private void Start() { OnlineMapsMarker marker = OnlineMaps.instance.AddMarker(OnlineMaps.instance.position, "Marker 1"); marker.customData = new CData { title = "Marker 1", label = "Hello World" }; OnlineMapsMarkerBase.OnMarkerDrawTooltip = delegate { }; OnlineMaps.instance.OnUpdateLate += OnUpdateLate; } private void OnUpdateLate() { OnlineMapsMarker tooltipMarker = OnlineMaps.instance.tooltipMarker as OnlineMapsMarker; CData data = null; if (tooltipMarker != null) data = tooltipMarker.customData as CData; if (data != null) { if (tooltip == null) { tooltip = Instantiate(tooltipPrefab) as GameObject; (tooltip.transform as RectTransform).SetParent(container.transform); } Vector2 screenPosition = OnlineMapsControlBase.instance.GetScreenPosition(tooltipMarker.position); screenPosition.y += tooltipMarker.height; 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; Text[] texts = tooltip.GetComponentsInChildren(); texts[0].text = data.title; texts[1].text = data.label; } else { OnlineMapsUtils.DestroyImmediate(tooltip); tooltip = null; } } internal class CData { public string title; public string label; } } }