public static GameObject CreateScrollView(Resources resources) { GameObject root = CreateUIElementRoot("Scroll View", new Vector2(200, 200)); GameObject viewport = CreateUIObject("Viewport", root); GameObject content = CreateUIObject("Content", viewport); // Sub controls. GameObject hScrollbar = CreateScrollbar(resources); hScrollbar.name = "Scrollbar Horizontal"; SetParentAndAlign(hScrollbar, root); RectTransform hScrollbarRT = hScrollbar.GetComponent <RectTransform>(); hScrollbarRT.anchorMin = Vector2.zero; hScrollbarRT.anchorMax = Vector2.right; hScrollbarRT.pivot = Vector2.zero; hScrollbarRT.sizeDelta = new Vector2(0, hScrollbarRT.sizeDelta.y); GameObject vScrollbar = CreateScrollbar(resources); vScrollbar.name = "Scrollbar Vertical"; SetParentAndAlign(vScrollbar, root); vScrollbar.GetComponent <Scrollbar>().SetDirection(Scrollbar.Direction.BottomToTop, true); RectTransform vScrollbarRT = vScrollbar.GetComponent <RectTransform>(); vScrollbarRT.anchorMin = Vector2.right; vScrollbarRT.anchorMax = Vector2.one; vScrollbarRT.pivot = Vector2.one; vScrollbarRT.sizeDelta = new Vector2(vScrollbarRT.sizeDelta.x, 0); // Setup RectTransforms. // Make viewport fill entire scroll view. RectTransform viewportRT = viewport.GetComponent <RectTransform>(); viewportRT.anchorMin = Vector2.zero; viewportRT.anchorMax = Vector2.one; viewportRT.sizeDelta = Vector2.zero; viewportRT.pivot = Vector2.up; // Make context match viewpoprt width and be somewhat taller. // This will show the vertical scrollbar and not the horizontal one. RectTransform contentRT = content.GetComponent <RectTransform>(); contentRT.anchorMin = Vector2.up; contentRT.anchorMax = Vector2.one; contentRT.sizeDelta = new Vector2(0, 300); contentRT.pivot = Vector2.up; // Setup UI components. ScrollRect scrollRect = root.AddComponent <ScrollRect>(); scrollRect.content = contentRT; scrollRect.viewport = viewportRT; scrollRect.horizontalScrollbar = hScrollbar.GetComponent <Scrollbar>(); scrollRect.verticalScrollbar = vScrollbar.GetComponent <Scrollbar>(); scrollRect.horizontalScrollbarVisibility = ScrollRect.ScrollbarVisibility.AutoHideAndExpandViewport; scrollRect.verticalScrollbarVisibility = ScrollRect.ScrollbarVisibility.AutoHideAndExpandViewport; scrollRect.horizontalScrollbarSpacing = -3; scrollRect.verticalScrollbarSpacing = -3; Image rootImage = root.AddComponent <Image>(); rootImage.sprite = resources.background; rootImage.type = Image.Type.Sliced; rootImage.color = s_PanelColor; Mask viewportMask = viewport.AddComponent <Mask>(); viewportMask.showMaskGraphic = false; Image viewportImage = viewport.AddComponent <Image>(); viewportImage.sprite = resources.mask; viewportImage.type = Image.Type.Sliced; return(root); }
public static GameObject CreateDropdown(Resources resources) { GameObject root = CreateUIElementRoot("Dropdown", s_ThickElementSize); GameObject label = CreateUIObject("Label", root); GameObject arrow = CreateUIObject("Arrow", root); GameObject template = CreateUIObject("Template", root); GameObject viewport = CreateUIObject("Viewport", template); GameObject content = CreateUIObject("Content", viewport); GameObject item = CreateUIObject("Item", content); GameObject itemBackground = CreateUIObject("Item Background", item); GameObject itemCheckmark = CreateUIObject("Item Checkmark", item); GameObject itemLabel = CreateUIObject("Item Label", item); // Sub controls. GameObject scrollbar = CreateScrollbar(resources); scrollbar.name = "Scrollbar"; SetParentAndAlign(scrollbar, template); Scrollbar scrollbarScrollbar = scrollbar.GetComponent <Scrollbar>(); scrollbarScrollbar.SetDirection(Scrollbar.Direction.BottomToTop, true); RectTransform vScrollbarRT = scrollbar.GetComponent <RectTransform>(); vScrollbarRT.anchorMin = Vector2.right; vScrollbarRT.anchorMax = Vector2.one; vScrollbarRT.pivot = Vector2.one; vScrollbarRT.sizeDelta = new Vector2(vScrollbarRT.sizeDelta.x, 0); // Setup item UI components. Text itemLabelText = itemLabel.AddComponent <Text>(); SetDefaultTextValues(itemLabelText); itemLabelText.alignment = TextAnchor.MiddleLeft; Image itemBackgroundImage = itemBackground.AddComponent <Image>(); itemBackgroundImage.color = new Color32(245, 245, 245, 255); Image itemCheckmarkImage = itemCheckmark.AddComponent <Image>(); itemCheckmarkImage.sprite = resources.checkmark; Toggle itemToggle = item.AddComponent <Toggle>(); itemToggle.targetGraphic = itemBackgroundImage; itemToggle.graphic = itemCheckmarkImage; itemToggle.isOn = true; // Setup template UI components. Image templateImage = template.AddComponent <Image>(); templateImage.sprite = resources.standard; templateImage.type = Image.Type.Sliced; ScrollRect templateScrollRect = template.AddComponent <ScrollRect>(); templateScrollRect.content = (RectTransform)content.transform; templateScrollRect.viewport = (RectTransform)viewport.transform; templateScrollRect.horizontal = false; templateScrollRect.movementType = ScrollRect.MovementType.Clamped; templateScrollRect.verticalScrollbar = scrollbarScrollbar; templateScrollRect.verticalScrollbarVisibility = ScrollRect.ScrollbarVisibility.AutoHideAndExpandViewport; templateScrollRect.verticalScrollbarSpacing = -3; Mask scrollRectMask = viewport.AddComponent <Mask>(); scrollRectMask.showMaskGraphic = false; Image viewportImage = viewport.AddComponent <Image>(); viewportImage.sprite = resources.mask; viewportImage.type = Image.Type.Sliced; // Setup dropdown UI components. Text labelText = label.AddComponent <Text>(); SetDefaultTextValues(labelText); labelText.text = "Option A"; labelText.alignment = TextAnchor.MiddleLeft; Image arrowImage = arrow.AddComponent <Image>(); arrowImage.sprite = resources.dropdown; Image backgroundImage = root.AddComponent <Image>(); backgroundImage.sprite = resources.standard; backgroundImage.color = s_DefaultSelectableColor; backgroundImage.type = Image.Type.Sliced; Dropdown dropdown = root.AddComponent <Dropdown>(); dropdown.targetGraphic = backgroundImage; SetDefaultColorTransitionValues(dropdown); dropdown.template = template.GetComponent <RectTransform>(); dropdown.captionText = labelText; dropdown.itemText = itemLabelText; // Setting default Item list. itemLabelText.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" }); // Set up RectTransforms. RectTransform labelRT = label.GetComponent <RectTransform>(); labelRT.anchorMin = Vector2.zero; labelRT.anchorMax = Vector2.one; labelRT.offsetMin = new Vector2(10, 6); labelRT.offsetMax = new Vector2(-25, -7); RectTransform arrowRT = arrow.GetComponent <RectTransform>(); arrowRT.anchorMin = new Vector2(1, 0.5f); arrowRT.anchorMax = new Vector2(1, 0.5f); arrowRT.sizeDelta = new Vector2(20, 20); arrowRT.anchoredPosition = new Vector2(-15, 0); RectTransform templateRT = template.GetComponent <RectTransform>(); templateRT.anchorMin = new Vector2(0, 0); templateRT.anchorMax = new Vector2(1, 0); templateRT.pivot = new Vector2(0.5f, 1); templateRT.anchoredPosition = new Vector2(0, 2); templateRT.sizeDelta = new Vector2(0, 150); RectTransform viewportRT = viewport.GetComponent <RectTransform>(); viewportRT.anchorMin = new Vector2(0, 0); viewportRT.anchorMax = new Vector2(1, 1); viewportRT.sizeDelta = new Vector2(-18, 0); viewportRT.pivot = new Vector2(0, 1); RectTransform contentRT = content.GetComponent <RectTransform>(); contentRT.anchorMin = new Vector2(0f, 1); contentRT.anchorMax = new Vector2(1f, 1); contentRT.pivot = new Vector2(0.5f, 1); contentRT.anchoredPosition = new Vector2(0, 0); contentRT.sizeDelta = new Vector2(0, 28); RectTransform itemRT = item.GetComponent <RectTransform>(); itemRT.anchorMin = new Vector2(0, 0.5f); itemRT.anchorMax = new Vector2(1, 0.5f); itemRT.sizeDelta = new Vector2(0, 20); RectTransform itemBackgroundRT = itemBackground.GetComponent <RectTransform>(); itemBackgroundRT.anchorMin = Vector2.zero; itemBackgroundRT.anchorMax = Vector2.one; itemBackgroundRT.sizeDelta = Vector2.zero; RectTransform itemCheckmarkRT = itemCheckmark.GetComponent <RectTransform>(); itemCheckmarkRT.anchorMin = new Vector2(0, 0.5f); itemCheckmarkRT.anchorMax = new Vector2(0, 0.5f); itemCheckmarkRT.sizeDelta = new Vector2(20, 20); itemCheckmarkRT.anchoredPosition = new Vector2(10, 0); RectTransform itemLabelRT = itemLabel.GetComponent <RectTransform>(); itemLabelRT.anchorMin = Vector2.zero; itemLabelRT.anchorMax = Vector2.one; itemLabelRT.offsetMin = new Vector2(20, 1); itemLabelRT.offsetMax = new Vector2(-10, -2); template.SetActive(false); return(root); }