static void SetDefaultFonts(MessageStyle selectedStyle)
 {
     if (selectedStyle.bodyTextFont == null)
     {
         selectedStyle.bodyTextFont = Resources.GetBuiltinResource(typeof(Font), "Arial.ttf") as Font;
     }
     if (selectedStyle.titleFont == null)
     {
         selectedStyle.titleFont = Resources.GetBuiltinResource(typeof(Font), "Arial.ttf") as Font;
     }
     if (selectedStyle.buttonFont == null)
     {
         selectedStyle.buttonFont = Resources.GetBuiltinResource(typeof(Font), "Arial.ttf") as Font;
     }
 }
        /// <summary>
        /// Creates a message box with the given style. Title, message and button text is optional, as this will be taken from the style itself but you can override if you want.
        /// </summary>
        /// <param name="selectedStyle">A MessageStyle Object</param>
        /// <param name="customTitle">Overrides title text in style</param>
        /// <param name="customMessage">Overrides message text in style</param>
        /// <param name="customButtonText">Overrides button text text in style</param>
        public static void CreateMessageBox(MessageStyle selectedStyle = null, string customTitle = "", string customMessage = "", string customButtonText = "")
        {
            if (selectedStyle == null)
            {
                selectedStyle = defaultStyle;
            }

            CheckForCanvas();
            SetDefaultFonts(selectedStyle);

            //Window
            GameObject newWindow = new GameObject();

            newWindow.transform.parent = messageBoxCanvas.transform;
            newWindow.name             = "Dynamic Message Box";
            Image windowImage = newWindow.AddComponent <Image>();

            windowImage.color = selectedStyle.backgroundColour;
            if (selectedStyle.backgroundImage != null)
            {
                windowImage.sprite = selectedStyle.backgroundImage;
            }
            RectTransform windowRect = windowImage.rectTransform;

            windowRect.anchoredPosition = new Vector2(0, 0);
            windowRect.sizeDelta        = new Vector2((Screen.width * selectedStyle.MessageBoxWidth), (Screen.height * selectedStyle.MessageBoxHeight));

            //TitleText
            GameObject newText = new GameObject();

            newText.transform.parent = newWindow.transform;
            newText.name             = "Dynamic Message Box Title";
            Text text = newText.AddComponent <Text>();

            text.text  = selectedStyle.titleText;
            text.color = selectedStyle.titleColour;
            text.resizeTextForBestFit = true;
            RectTransform titleRect = newText.GetComponent <RectTransform>();

            titleRect.sizeDelta        = new Vector2(windowRect.rect.width, windowRect.rect.height / 5);
            titleRect.anchoredPosition = new Vector2(0, (0 + (windowRect.rect.height / 2)) - (titleRect.rect.height / 2));
            text.alignment             = TextAnchor.MiddleCenter;
            text.font = selectedStyle.titleFont;

            //Button
            GameObject newButton = new GameObject();

            newButton.transform.parent = newWindow.transform;
            newButton.name             = "Dynamic Message Box Button";
            Image  buttonImage = newButton.AddComponent <Image>();
            Button button      = newButton.AddComponent <Button>();

            button.targetGraphic = buttonImage;
            button.colors        = selectedStyle.buttonColours;
            RectTransform buttonRect = newButton.GetComponent <RectTransform>();

            buttonRect.sizeDelta        = new Vector2(windowRect.rect.width * selectedStyle.buttonWidth, windowRect.rect.height / 10);
            buttonRect.anchoredPosition = new Vector2(0, (0 - (windowRect.rect.height / 2)) + (buttonRect.rect.height / 2));
            if (selectedStyle.buttonBackground != null)
            {
                buttonImage.sprite = selectedStyle.buttonBackground;
            }

            //Button Fuctionality
            DynamicMessageBox dmb = newWindow.AddComponent <DynamicMessageBox>();

            dmb.buttonObj = newButton;

            //ButtonText
            GameObject newButtonText = new GameObject();

            newButtonText.transform.parent = newButton.transform;
            newButtonText.name             = "Dynamic Message Box Button Text";
            Text buttonText = newButtonText.AddComponent <Text>();

            buttonText.font  = selectedStyle.buttonFont;
            buttonText.text  = selectedStyle.buttonTextText;
            buttonText.color = selectedStyle.buttonTextColour;
            RectTransform buttonTextRect = newButtonText.GetComponent <RectTransform>();

            buttonTextRect.sizeDelta        = buttonRect.sizeDelta;
            buttonTextRect.anchoredPosition = new Vector2(0, 0);
            buttonText.alignment            = TextAnchor.MiddleCenter;
            buttonText.resizeTextForBestFit = true;

            //Body Text
            GameObject newBodyText = new GameObject();

            newBodyText.transform.parent = newWindow.transform;
            newBodyText.name             = "Dynamic Message Box Body Text";
            Text bodyText = newBodyText.AddComponent <Text>();

            bodyText.text                 = selectedStyle.bodyTextText;
            bodyText.font                 = selectedStyle.bodyTextFont;
            bodyText.color                = selectedStyle.bodyTextColour;
            bodyText.resizeTextMaxSize    = 30;
            bodyText.alignment            = TextAnchor.MiddleCenter;
            bodyText.resizeTextForBestFit = true;
            RectTransform bodyTextRect   = newBodyText.GetComponent <RectTransform>();
            float         bodyTextHeight = windowRect.rect.height - titleRect.rect.height - buttonRect.rect.height;

            bodyTextRect.sizeDelta        = new Vector2(windowRect.rect.width, bodyTextHeight);
            bodyTextRect.anchoredPosition = new Vector2(0, 0);

            //Check for text override
            if (customTitle != "")
            {
                text.text = customTitle;
            }
            if (customMessage != "")
            {
                bodyText.text = customMessage;
            }
            if (customButtonText != "")
            {
                buttonText.text = customButtonText;
            }
        }