/// <summary> /// Show the message box using specified param. /// </summary> /// <returns>The show.</returns> /// <param name="param">Parameter.</param> public static void Show(MessageBoxParams param) { if (Instance == null) { GameObject canvasObject = new GameObject(); canvasObject.name = "Easy Message Box Canvas"; canvasObject.AddComponent <Canvas>(); canvasObject.GetComponent <Canvas>().renderMode = RenderMode.ScreenSpaceOverlay; canvasObject.AddComponent <CanvasScaler>(); canvasObject.AddComponent <GraphicRaycaster>(); canvasObject.AddComponent <EasyMessageBox>(); Instance = canvasObject.GetComponent <EasyMessageBox>(); var messageBoxObject = (GameObject)Instantiate(settings.DefaultPrefab); var messageBox = messageBoxObject.GetComponent <BoxController>(); messageBoxObject.transform.SetParent(Instance.transform); Instance.Templates.Add(messageBox); Instance.boxPool.Add(new List <BoxController>()); Instance.boxPool[0].Add(Instance.Templates[0]); (messageBoxObject.transform as RectTransform).anchoredPosition = Vector2.zero; (messageBoxObject.transform as RectTransform).sizeDelta = Vector2.zero; messageBoxObject.SetActive(false); Debug.Log("No template found in the scene, using default message box template."); } else if (Instance.Templates == null || /*Instance.Templates.Count - 1 < param.TemplateId*/ Instance.Templates.Count == 0) { Debug.LogWarning("Cannot find template id " + param.TemplateId.ToString() + ", using default message box. Make sure to add corresponding template in the Inspector of EasyMessageBox object before you call its ID."); var messageBoxObject = (GameObject)Instantiate(settings.DefaultPrefab); var messageBox = messageBoxObject.GetComponent <BoxController>(); messageBoxObject.transform.SetParent(Instance.transform); Instance.Templates.Add(messageBox); param.TemplateId = 0; Instance.boxPool.Add(new List <BoxController>()); Instance.boxPool[0].Add(Instance.Templates[0]); (messageBoxObject.transform as RectTransform).anchoredPosition = Vector2.zero; (messageBoxObject.transform as RectTransform).sizeDelta = Vector2.zero; messageBoxObject.SetActive(false); } if (param.TemplateId > Instance.Templates.Count - 1) { Debug.Log(string.Format("Cannot find template id {0}, using the first template 0.", param.TemplateId.ToString())); param.TemplateId = 0; } switch (param.MultipleCallBehaviour) { case MultipleCallBehaviours.ShowNewInstance: Instance.ActualShowDialogBox(param); break; case MultipleCallBehaviours.Queue: if (!Instance.hasQueuedBox) { Instance.ActualShowDialogBox(param); } else { BoxQueue.Enqueue(param); } break; default: break; } }