public static GameObject CreateScrollView(UIControls.Resources resources)
        {
            GameObject gameObject  = UIControls.CreateUIElementRoot("Scroll View", new Vector2(200f, 200f));
            GameObject gameObject2 = UIControls.CreateUIObject("Viewport", gameObject);
            GameObject gameObject3 = UIControls.CreateUIObject("Content", gameObject2);
            GameObject gameObject4 = UIControls.CreateScrollbar(resources);

            gameObject4.name = "Scrollbar Horizontal";
            UIControls.SetParentAndAlign(gameObject4, gameObject);
            RectTransform component = gameObject4.GetComponent <RectTransform>();

            component.anchorMin = Vector2.zero;
            component.anchorMax = Vector2.right;
            component.pivot     = Vector2.zero;
            component.sizeDelta = new Vector2(0f, component.sizeDelta.y);
            GameObject gameObject5 = UIControls.CreateScrollbar(resources);

            gameObject5.name = "Scrollbar Vertical";
            UIControls.SetParentAndAlign(gameObject5, gameObject);
            gameObject5.GetComponent <Scrollbar>().SetDirection(Scrollbar.Direction.BottomToTop, true);
            RectTransform component2 = gameObject5.GetComponent <RectTransform>();

            component2.anchorMin = Vector2.right;
            component2.anchorMax = Vector2.one;
            component2.pivot     = Vector2.one;
            component2.sizeDelta = new Vector2(component2.sizeDelta.x, 0f);
            RectTransform component3 = gameObject2.GetComponent <RectTransform>();

            component3.anchorMin = Vector2.zero;
            component3.anchorMax = Vector2.one;
            component3.sizeDelta = Vector2.zero;
            component3.pivot     = Vector2.up;
            RectTransform component4 = gameObject3.GetComponent <RectTransform>();

            component4.anchorMin = Vector2.up;
            component4.anchorMax = Vector2.one;
            component4.sizeDelta = new Vector2(0f, 300f);
            component4.pivot     = Vector2.up;
            ScrollRect scrollRect = gameObject.AddComponent <ScrollRect>();

            scrollRect.content                       = component4;
            scrollRect.viewport                      = component3;
            scrollRect.horizontalScrollbar           = gameObject4.GetComponent <Scrollbar>();
            scrollRect.verticalScrollbar             = gameObject5.GetComponent <Scrollbar>();
            scrollRect.horizontalScrollbarVisibility = ScrollRect.ScrollbarVisibility.AutoHideAndExpandViewport;
            scrollRect.verticalScrollbarVisibility   = ScrollRect.ScrollbarVisibility.AutoHideAndExpandViewport;
            scrollRect.horizontalScrollbarSpacing    = -3f;
            scrollRect.verticalScrollbarSpacing      = -3f;
            Image image = gameObject.AddComponent <Image>();

            image.sprite = resources.background;
            image.type   = Image.Type.Sliced;
            image.color  = UIControls.s_PanelColor;
            Mask mask = gameObject2.AddComponent <Mask>();

            mask.showMaskGraphic = false;
            Image image2 = gameObject2.AddComponent <Image>();

            image2.sprite = resources.mask;
            image2.type   = Image.Type.Sliced;
            return(gameObject);
        }
        public static GameObject CreateDropdown(UIControls.Resources resources)
        {
            GameObject gameObject   = UIControls.CreateUIElementRoot("Dropdown", UIControls.s_ThickElementSize);
            GameObject gameObject2  = UIControls.CreateUIObject("Label", gameObject);
            GameObject gameObject3  = UIControls.CreateUIObject("Arrow", gameObject);
            GameObject gameObject4  = UIControls.CreateUIObject("Template", gameObject);
            GameObject gameObject5  = UIControls.CreateUIObject("Viewport", gameObject4);
            GameObject gameObject6  = UIControls.CreateUIObject("Content", gameObject5);
            GameObject gameObject7  = UIControls.CreateUIObject("Item", gameObject6);
            GameObject gameObject8  = UIControls.CreateUIObject("Item Background", gameObject7);
            GameObject gameObject9  = UIControls.CreateUIObject("Item Checkmark", gameObject7);
            GameObject gameObject10 = UIControls.CreateUIObject("Item Label", gameObject7);
            GameObject gameObject11 = UIControls.CreateScrollbar(resources);

            gameObject11.name = "Scrollbar";
            UIControls.SetParentAndAlign(gameObject11, gameObject4);

            Scrollbar component = gameObject11.GetComponent <Scrollbar>();

            component.SetDirection(Scrollbar.Direction.BottomToTop, true);

            RectTransform component2 = gameObject11.GetComponent <RectTransform>();

            component2.anchorMin = Vector2.right;
            component2.anchorMax = Vector2.one;
            component2.pivot     = Vector2.one;
            component2.sizeDelta = new Vector2(component2.sizeDelta.x, 0f);

            Text text = gameObject10.AddComponent <Text>();

            UIControls.SetDefaultTextValues(text);
            text.alignment = TextAnchor.MiddleLeft;

            Image image = gameObject8.AddComponent <Image>();

            image.color = new Color32(245, 245, 245, byte.MaxValue);
            Image image2 = gameObject9.AddComponent <Image>();

            image2.sprite = resources.checkmark;
            Toggle toggle = gameObject7.AddComponent <Toggle>();

            toggle.targetGraphic = image;
            toggle.graphic       = image2;
            toggle.isOn          = true;
            Image image3 = gameObject4.AddComponent <Image>();

            image3.sprite = resources.standard;
            image3.type   = Image.Type.Sliced;

            ScrollRect scrollRect = gameObject4.AddComponent <ScrollRect>();

            // These 2 lines were causing the cast error, why did Unity use this here and elsewere the GetComponent()???
            //scrollRect.content = (RectTransform)gameObject6.transform;
            //scrollRect.viewport = (RectTransform)gameObject5.transform;
            scrollRect.content  = gameObject6.GetComponent <RectTransform>();
            scrollRect.viewport = gameObject5.GetComponent <RectTransform>();

            scrollRect.horizontal                  = false;
            scrollRect.movementType                = ScrollRect.MovementType.Clamped;
            scrollRect.verticalScrollbar           = component;
            scrollRect.verticalScrollbarVisibility = ScrollRect.ScrollbarVisibility.AutoHideAndExpandViewport;
            scrollRect.verticalScrollbarSpacing    = -3f;

            Mask mask = gameObject5.AddComponent <Mask>();

            mask.showMaskGraphic = false;

            Image image4 = gameObject5.AddComponent <Image>();

            image4.sprite = resources.mask;
            image4.type   = Image.Type.Sliced;

            Text text2 = gameObject2.AddComponent <Text>();

            UIControls.SetDefaultTextValues(text2);
            text2.alignment = TextAnchor.MiddleLeft;

            Image image5 = gameObject3.AddComponent <Image>();

            image5.sprite = resources.dropdown;
            Image image6 = gameObject.AddComponent <Image>();

            image6.sprite = resources.standard;
            image6.color  = UIControls.s_DefaultSelectableColor;
            image6.type   = Image.Type.Sliced;

            Dropdown dropdown = gameObject.AddComponent <Dropdown>();

            dropdown.targetGraphic = image6;
            UIControls.SetDefaultColorTransitionValues(dropdown);
            dropdown.template    = gameObject4.GetComponent <RectTransform>();
            dropdown.captionText = text2;
            dropdown.itemText    = text;

            text.text = "Option A";
            dropdown.options.Add(new Dropdown.OptionData
            {
                text = "Option A"
            });
            dropdown.options.Add(new Dropdown.OptionData
            {
                text = "Option B"
            });
            dropdown.options.Add(new Dropdown.OptionData
            {
                text = "Option C"
            });

            dropdown.RefreshShownValue();

            RectTransform component3 = gameObject2.GetComponent <RectTransform>();

            component3.anchorMin = Vector2.zero;
            component3.anchorMax = Vector2.one;
            component3.offsetMin = new Vector2(10f, 6f);
            component3.offsetMax = new Vector2(-25f, -7f);

            RectTransform component4 = gameObject3.GetComponent <RectTransform>();

            component4.anchorMin        = new Vector2(1f, 0.5f);
            component4.anchorMax        = new Vector2(1f, 0.5f);
            component4.sizeDelta        = new Vector2(20f, 20f);
            component4.anchoredPosition = new Vector2(-15f, 0f);

            RectTransform component5 = gameObject4.GetComponent <RectTransform>();

            component5.anchorMin        = new Vector2(0f, 0f);
            component5.anchorMax        = new Vector2(1f, 0f);
            component5.pivot            = new Vector2(0.5f, 1f);
            component5.anchoredPosition = new Vector2(0f, 2f);
            component5.sizeDelta        = new Vector2(0f, 150f);

            RectTransform component6 = gameObject5.GetComponent <RectTransform>();

            component6.anchorMin = new Vector2(0f, 0f);
            component6.anchorMax = new Vector2(1f, 1f);
            component6.sizeDelta = new Vector2(-18f, 0f);
            component6.pivot     = new Vector2(0f, 1f);

            RectTransform component7 = gameObject6.GetComponent <RectTransform>();

            component7.anchorMin        = new Vector2(0f, 1f);
            component7.anchorMax        = new Vector2(1f, 1f);
            component7.pivot            = new Vector2(0.5f, 1f);
            component7.anchoredPosition = new Vector2(0f, 0f);
            component7.sizeDelta        = new Vector2(0f, 28f);

            RectTransform component8 = gameObject7.GetComponent <RectTransform>();

            component8.anchorMin = new Vector2(0f, 0.5f);
            component8.anchorMax = new Vector2(1f, 0.5f);
            component8.sizeDelta = new Vector2(0f, 20f);

            RectTransform component9 = gameObject8.GetComponent <RectTransform>();

            component9.anchorMin = Vector2.zero;
            component9.anchorMax = Vector2.one;
            component9.sizeDelta = Vector2.zero;

            RectTransform component10 = gameObject9.GetComponent <RectTransform>();

            component10.anchorMin        = new Vector2(0f, 0.5f);
            component10.anchorMax        = new Vector2(0f, 0.5f);
            component10.sizeDelta        = new Vector2(20f, 20f);
            component10.anchoredPosition = new Vector2(10f, 0f);

            RectTransform component11 = gameObject10.GetComponent <RectTransform>();

            component11.anchorMin = Vector2.zero;
            component11.anchorMax = Vector2.one;
            component11.offsetMin = new Vector2(20f, 1f);
            component11.offsetMax = new Vector2(-10f, -2f);

            gameObject4.SetActive(false);

            return(gameObject);
        }