private static void SetupCanvas(CanvasDialogueUI ui, DialogueSystemController dialogueManager)
        {
            if (FindObjectOfType <UnityEngine.EventSystems.EventSystem>() == null)
            {
                new GameObject("EventSystem", typeof(UnityEngine.EventSystems.EventSystem),
                               typeof(UnityEngine.EventSystems.StandaloneInputModule));
            }
            var canvas = dialogueManager.GetComponentInChildren <Canvas>();

            if (canvas == null)
            {
                var canvasObject = new GameObject("Canvas");
                canvasObject.layer = 5; // Built-in UI layer.
                canvasObject.AddComponent <Canvas>();
                canvasObject.AddComponent <UnityEngine.UI.CanvasScaler>();
                canvasObject.AddComponent <UnityEngine.UI.GraphicRaycaster>();
                canvas            = canvasObject.GetComponent <Canvas>();
                canvas.renderMode = RenderMode.ScreenSpaceOverlay;
                canvasObject.transform.SetParent(dialogueManager.transform);
            }
            var uiInstance = Instantiate(ui) as CanvasDialogueUI;

            uiInstance.name = uiInstance.name.Replace("(Clone)", string.Empty);
            uiInstance.transform.SetParent(canvas.transform, false);
            dialogueManager.displaySettings.dialogueUI = uiInstance.gameObject;
        }
 public static void HandleCanvasDialogueUI(CanvasDialogueUI ui, DialogueSystemController dialogueManager)
 {
     if (ui == null)
     {
         return;
     }
     if (Tools.IsPrefab(ui.gameObject) && (ui.GetComponentInParent <Canvas>() == null))
     {
         if (EditorUtility.DisplayDialog("Canvas-Based Dialogue UI", "Would you like to add an instance of this dialogue UI prefab as a child of the Dialogue Manager?",
                                         "Add Instance", "Use Prefab"))
         {
             SetupCanvas(ui, dialogueManager);
         }
         else
         {
             //--- Allow prefabs now: dialogueManager.displaySettings.dialogueUI = null;
         }
     }
 }