| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- #if UNITY_EDITOR
- using UnityEngine;
- using System.Collections.Generic;
- namespace UnityEngine.UI
- {
- public static class SGDefaultControls
- {
- #region code from DefaultControls.cs
- public struct Resources
- {
- public Sprite standard;
- public Sprite background;
- public Sprite inputField;
- public Sprite knob;
- public Sprite checkmark;
- public Sprite dropdown;
- public Sprite mask;
- }
- private const float kWidth = 160f;
- private const float kThickHeight = 30f;
- private const float kThinHeight = 20f;
- //private static Vector2 s_ThickElementSize = new Vector2(kWidth, kThickHeight);
- //private static Vector2 s_ThinElementSize = new Vector2(kWidth, kThinHeight);
- //private static Vector2 s_ImageElementSize = new Vector2(100f, 100f);
- //private static Color s_DefaultSelectableColor = new Color(1f, 1f, 1f, 1f);
- //private static Color s_PanelColor = new Color(1f, 1f, 1f, 0.392f);
- private static Color s_TextColor = new Color(50f / 255f, 50f / 255f, 50f / 255f, 1f);
- // Helper methods at top
- private static GameObject CreateUIElementRoot(string name, Vector2 size)
- {
- GameObject child = new GameObject(name);
- RectTransform rectTransform = child.AddComponent<RectTransform>();
- rectTransform.sizeDelta = size;
- return child;
- }
- static GameObject CreateUIObject(string name, GameObject parent)
- {
- GameObject go = new GameObject(name);
- go.AddComponent<RectTransform>();
- SetParentAndAlign(go, parent);
- return go;
- }
- private static void SetDefaultTextValues(Text lbl)
- {
- // Set text values we want across UI elements in default controls.
- // Don't set values which are the same as the default values for the Text component,
- // since there's no point in that, and it's good to keep them as consistent as possible.
- lbl.color = s_TextColor;
- }
- private static void SetDefaultColorTransitionValues(Selectable slider)
- {
- ColorBlock colors = slider.colors;
- colors.highlightedColor = new Color(0.882f, 0.882f, 0.882f);
- colors.pressedColor = new Color(0.698f, 0.698f, 0.698f);
- colors.disabledColor = new Color(0.521f, 0.521f, 0.521f);
- }
- private static void SetParentAndAlign(GameObject child, GameObject parent)
- {
- if (parent == null)
- return;
- child.transform.SetParent(parent.transform, false);
- SetLayerRecursively(child, parent.layer);
- }
- private static void SetLayerRecursively(GameObject go, int layer)
- {
- go.layer = layer;
- Transform t = go.transform;
- for (int i = 0; i < t.childCount; i++)
- SetLayerRecursively(t.GetChild(i).gameObject, layer);
- }
- #endregion
-
- public static GameObject CreateLoopHorizontalScrollRect(DefaultControls.Resources resources)
- {
- GameObject root = CreateUIElementRoot("Loop Horizontal Scroll Rect", new Vector2(400, 200));
- GameObject cache = CreateUIObject("Cache", root);
- cache.SetActive(false);
- GameObject content = CreateUIObject("Content", root);
- RectTransform contentRT = content.GetComponent<RectTransform>();
- contentRT.anchorMin = new Vector2(0, 0.5f);
- contentRT.anchorMax = new Vector2(0, 0.5f);
- contentRT.sizeDelta = new Vector2(0, 200);
- contentRT.pivot = new Vector2(0, 0.5f);
- // Setup UI components.
- LoopHorizontalScrollRect scrollRect = root.AddComponent<LoopHorizontalScrollRect>();
- scrollRect.content = contentRT;
- scrollRect.viewport = null;
- scrollRect.horizontalScrollbar = null;
- scrollRect.verticalScrollbar = null;
- scrollRect.horizontal = true;
- scrollRect.vertical = false;
- scrollRect.horizontalScrollbarVisibility = LoopScrollRect.ScrollbarVisibility.Permanent;
- scrollRect.verticalScrollbarVisibility = LoopScrollRect.ScrollbarVisibility.Permanent;
- scrollRect.horizontalScrollbarSpacing = 0;
- scrollRect.verticalScrollbarSpacing = 0;
- scrollRect.u_CacheRect = cache.transform as RectTransform;
- root.AddComponent<RectMask2D>();
- HorizontalLayoutGroup layoutGroup = content.AddComponent<HorizontalLayoutGroup>();
- layoutGroup.childAlignment = TextAnchor.MiddleLeft;
- layoutGroup.childForceExpandWidth = false;
- layoutGroup.childForceExpandHeight = true;
- ContentSizeFitter sizeFitter = content.AddComponent<ContentSizeFitter>();
- sizeFitter.horizontalFit = ContentSizeFitter.FitMode.PreferredSize;
- sizeFitter.verticalFit = ContentSizeFitter.FitMode.Unconstrained;
- return root;
- }
- public static GameObject CreateLoopVerticalScrollRect(DefaultControls.Resources resources)
- {
- GameObject root = CreateUIElementRoot("Loop Vertical Scroll Rect", new Vector2(200, 400));
- GameObject cache = CreateUIObject("Cache", root);
- cache.SetActive(false);
- GameObject content = CreateUIObject("Content", root);
-
- RectTransform contentRT = content.GetComponent<RectTransform>();
- contentRT.anchorMin = new Vector2(0.5f, 1);
- contentRT.anchorMax = new Vector2(0.5f, 1);
- contentRT.sizeDelta = new Vector2(200, 0);
- contentRT.pivot = new Vector2(0.5f, 1);
- // Setup UI components.
- LoopVerticalScrollRect scrollRect = root.AddComponent<LoopVerticalScrollRect>();
- scrollRect.content = contentRT;
- scrollRect.viewport = null;
- scrollRect.horizontalScrollbar = null;
- scrollRect.verticalScrollbar = null;
- scrollRect.horizontal = false;
- scrollRect.vertical = true;
- scrollRect.horizontalScrollbarVisibility = LoopScrollRect.ScrollbarVisibility.Permanent;
- scrollRect.verticalScrollbarVisibility = LoopScrollRect.ScrollbarVisibility.Permanent;
- scrollRect.horizontalScrollbarSpacing = 0;
- scrollRect.verticalScrollbarSpacing = 0;
- scrollRect.u_CacheRect = cache.transform as RectTransform;
- root.AddComponent<RectMask2D>();
- VerticalLayoutGroup layoutGroup = content.AddComponent<VerticalLayoutGroup>();
- layoutGroup.childAlignment = TextAnchor.UpperCenter;
- layoutGroup.childForceExpandWidth = true;
- layoutGroup.childForceExpandHeight = false;
- ContentSizeFitter sizeFitter = content.AddComponent<ContentSizeFitter>();
- sizeFitter.horizontalFit = ContentSizeFitter.FitMode.Unconstrained;
- sizeFitter.verticalFit = ContentSizeFitter.FitMode.PreferredSize;
- return root;
- }
- }
- }
- #endif
|