13 static internal class ExtensionMenuOptions
15 #region Unity Builder section - Do not change unless UI Source (Editor\MenuOptions) changes
16 #region Unity Builder properties - Do not change unless UI Source (Editor\MenuOptions) changes
17 private const string kUILayerName =
"UI";
18 private const float kWidth = 160f;
19 private const float kThickHeight = 30f;
20 private const float kThinHeight = 20f;
21 private const string kStandardSpritePath =
"UI/Skin/UISprite.psd";
22 private const string kBackgroundSpriteResourcePath =
"UI/Skin/Background.psd";
23 private const string kInputFieldBackgroundPath =
"UI/Skin/InputFieldBackground.psd";
24 private const string kKnobPath =
"UI/Skin/Knob.psd";
25 private const string kCheckmarkPath =
"UI/Skin/Checkmark.psd";
27 private static Vector2 s_ThickGUIElementSize =
new Vector2(kWidth, kThickHeight);
28 private static Vector2 s_ThinGUIElementSize =
new Vector2(kWidth, kThinHeight);
29 private static Vector2 s_ImageGUIElementSize =
new Vector2(100f, 100f);
30 private static Color s_DefaultSelectableColor =
new Color(1f, 1f, 1f, 1f);
31 private static Color s_TextColor =
new Color(50f / 255f, 50f / 255f, 50f / 255f, 1f);
33 #region Unity Builder methods - Do not change unless UI Source (Editor\MenuOptions) changes
34 private static void SetPositionVisibleinSceneView(RectTransform canvasRTransform, RectTransform itemTransform)
37 SceneView sceneView = SceneView.lastActiveSceneView;
38 if (sceneView ==
null && SceneView.sceneViews.Count > 0)
39 sceneView = SceneView.sceneViews[0] as SceneView;
42 if (sceneView ==
null || sceneView.camera ==
null)
46 Vector2 localPlanePosition;
47 Camera camera = sceneView.camera;
48 Vector3 position = Vector3.zero;
49 if (RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRTransform,
new Vector2(camera.pixelWidth / 2, camera.pixelHeight / 2), camera, out localPlanePosition))
52 localPlanePosition.x = localPlanePosition.x + canvasRTransform.sizeDelta.x * canvasRTransform.pivot.x;
53 localPlanePosition.y = localPlanePosition.y + canvasRTransform.sizeDelta.y * canvasRTransform.pivot.y;
55 localPlanePosition.x = Mathf.Clamp(localPlanePosition.x, 0, canvasRTransform.sizeDelta.x);
56 localPlanePosition.y = Mathf.Clamp(localPlanePosition.y, 0, canvasRTransform.sizeDelta.y);
59 position.x = localPlanePosition.x - canvasRTransform.sizeDelta.x * itemTransform.anchorMin.x;
60 position.y = localPlanePosition.y - canvasRTransform.sizeDelta.y * itemTransform.anchorMin.y;
62 Vector3 minLocalPosition;
63 minLocalPosition.x = canvasRTransform.sizeDelta.x * (0 - canvasRTransform.pivot.x) + itemTransform.sizeDelta.x * itemTransform.pivot.x;
64 minLocalPosition.y = canvasRTransform.sizeDelta.y * (0 - canvasRTransform.pivot.y) + itemTransform.sizeDelta.y * itemTransform.pivot.y;
66 Vector3 maxLocalPosition;
67 maxLocalPosition.x = canvasRTransform.sizeDelta.x * (1 - canvasRTransform.pivot.x) - itemTransform.sizeDelta.x * itemTransform.pivot.x;
68 maxLocalPosition.y = canvasRTransform.sizeDelta.y * (1 - canvasRTransform.pivot.y) - itemTransform.sizeDelta.y * itemTransform.pivot.y;
70 position.x = Mathf.Clamp(position.x, minLocalPosition.x, maxLocalPosition.x);
71 position.y = Mathf.Clamp(position.y, minLocalPosition.y, maxLocalPosition.y);
74 itemTransform.anchoredPosition = position;
75 itemTransform.localRotation = Quaternion.identity;
76 itemTransform.localScale = Vector3.one;
79 private static GameObject CreateUIElementRoot(
string name, MenuCommand menuCommand, Vector2 size)
81 GameObject parent = menuCommand.context as GameObject;
82 if (parent ==
null || parent.GetComponentInParent<Canvas>() ==
null)
84 parent = GetOrCreateCanvasGameObject();
86 GameObject child =
new GameObject(name);
88 Undo.RegisterCreatedObjectUndo(child,
"Create " + name);
89 Undo.SetTransformParent(child.transform, parent.transform,
"Parent " + child.name);
90 GameObjectUtility.SetParentAndAlign(child, parent);
92 RectTransform rectTransform = child.AddComponent<RectTransform>();
93 rectTransform.sizeDelta = size;
94 if (parent != menuCommand.context)
96 SetPositionVisibleinSceneView(parent.GetComponent<RectTransform>(), rectTransform);
98 Selection.activeGameObject = child;
102 static GameObject CreateUIObject(
string name, GameObject parent)
104 GameObject go =
new GameObject(name);
105 go.AddComponent<RectTransform>();
106 GameObjectUtility.SetParentAndAlign(go, parent);
110 static public void AddCanvas(MenuCommand menuCommand)
112 var go = CreateNewUI();
113 GameObjectUtility.SetParentAndAlign(go, menuCommand.context as GameObject);
114 if (go.transform.parent as RectTransform)
116 RectTransform rect = go.transform as RectTransform;
117 rect.anchorMin = Vector2.zero;
118 rect.anchorMax = Vector2.one;
119 rect.anchoredPosition = Vector2.zero;
120 rect.sizeDelta = Vector2.zero;
122 Selection.activeGameObject = go;
125 static public GameObject CreateNewUI()
128 var root =
new GameObject(
"Canvas");
129 root.layer = LayerMask.NameToLayer(kUILayerName);
130 Canvas canvas = root.AddComponent<Canvas>();
131 canvas.renderMode = RenderMode.ScreenSpaceOverlay;
132 root.AddComponent<CanvasScaler>();
133 root.AddComponent<GraphicRaycaster>();
134 Undo.RegisterCreatedObjectUndo(root,
"Create " + root.name);
137 CreateEventSystem(
false);
141 public static void CreateEventSystem(MenuCommand menuCommand)
143 GameObject parent = menuCommand.context as GameObject;
144 CreateEventSystem(
true, parent);
147 private static void CreateEventSystem(
bool select)
149 CreateEventSystem(select,
null);
152 private static void CreateEventSystem(
bool select, GameObject parent)
154 var esys =
Object.FindObjectOfType<EventSystem>();
157 var eventSystem =
new GameObject(
"EventSystem");
158 GameObjectUtility.SetParentAndAlign(eventSystem, parent);
159 esys = eventSystem.AddComponent<EventSystem>();
160 eventSystem.AddComponent<StandaloneInputModule>();
162 Undo.RegisterCreatedObjectUndo(eventSystem,
"Create " + eventSystem.name);
165 if (select && esys !=
null)
167 Selection.activeGameObject = esys.gameObject;
172 static public GameObject GetOrCreateCanvasGameObject()
174 GameObject selectedGo = Selection.activeGameObject;
177 Canvas canvas = (selectedGo !=
null) ? selectedGo.GetComponentInParent<Canvas>() :
null;
178 if (canvas !=
null && canvas.gameObject.activeInHierarchy)
179 return canvas.gameObject;
182 canvas =
Object.FindObjectOfType(typeof(Canvas)) as Canvas;
183 if (canvas !=
null && canvas.gameObject.activeInHierarchy)
184 return canvas.gameObject;
187 return ExtensionMenuOptions.CreateNewUI();
190 private static void SetDefaultColorTransitionValues(Selectable slider)
192 ColorBlock colors = slider.colors;
193 colors.highlightedColor =
new Color(0.882f, 0.882f, 0.882f);
194 colors.pressedColor =
new Color(0.698f, 0.698f, 0.698f);
195 colors.disabledColor =
new Color(0.521f, 0.521f, 0.521f);
198 private static void SetDefaultTextValues(Text lbl)
203 lbl.color = s_TextColor;
208 #region UI Extensions "Create" Menu items
210 #region Scroll Snap controls
211 [MenuItem(
"GameObject/UI/Extensions/Horizontal Scroll Snap",
false)]
212 static public void AddHorizontalScrollSnap(MenuCommand menuCommand)
214 GameObject horizontalScrollSnapRoot = CreateUIElementRoot(
"Horizontal Scroll Snap", menuCommand, s_ThickGUIElementSize);
216 GameObject childContent = CreateUIObject(
"Content", horizontalScrollSnapRoot);
218 GameObject childPage01 = CreateUIObject(
"Page_01", childContent);
220 GameObject childText = CreateUIObject(
"Text", childPage01);
223 RectTransform rectTransformScrollSnapRoot = horizontalScrollSnapRoot.GetComponent<RectTransform>();
224 rectTransformScrollSnapRoot.anchorMin =
new Vector2(0.5f, 0.5f);
225 rectTransformScrollSnapRoot.anchorMax =
new Vector2(0.5f, 0.5f);
226 rectTransformScrollSnapRoot.anchoredPosition = Vector2.zero;
227 rectTransformScrollSnapRoot.sizeDelta =
new Vector2(300f, 150f);
230 Image image = horizontalScrollSnapRoot.AddComponent<
Image>();
231 image.sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kBackgroundSpriteResourcePath);
232 image.type =
Image.Type.Sliced;
233 image.color =
new Color(1f, 1f, 1f, 0.392f);
235 ScrollRect sr = horizontalScrollSnapRoot.AddComponent<ScrollRect>();
237 sr.horizontal =
true;
241 RectTransform rectTransformContent = childContent.GetComponent<RectTransform>();
242 rectTransformContent.anchorMin = Vector2.zero;
243 rectTransformContent.anchorMax =
new Vector2(1f, 1f);
244 rectTransformContent.sizeDelta = Vector2.zero;
246 sr.content = rectTransformContent;
249 Image pageImage = childPage01.AddComponent<
Image>();
250 pageImage.sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kStandardSpritePath);
251 pageImage.type =
Image.Type.Sliced;
252 pageImage.color = s_DefaultSelectableColor;
254 RectTransform rectTransformPage01 = childPage01.GetComponent<RectTransform>();
255 rectTransformPage01.anchorMin =
new Vector2(0f, 0.5f);
256 rectTransformPage01.anchorMax =
new Vector2(0f, 0.5f);
257 rectTransformPage01.pivot =
new Vector2(0f, 0.5f);
260 Text text = childText.AddComponent<Text>();
261 text.text =
"Page_01";
262 text.alignment = TextAnchor.MiddleCenter;
263 text.color =
new Color(0.196f, 0.196f, 0.196f);
266 RectTransform rectTransformPage01Text = childText.GetComponent<RectTransform>();
267 rectTransformPage01Text.anchorMin =
new Vector2(0.5f, 0.5f);
268 rectTransformPage01Text.anchorMax =
new Vector2(0.5f, 0.5f);
269 rectTransformPage01Text.pivot =
new Vector2(0.5f, 0.5f);
273 Selection.activeGameObject = horizontalScrollSnapRoot;
276 [MenuItem(
"GameObject/UI/Extensions/Vertical Scroll Snap",
false)]
277 static public void AddVerticallScrollSnap(MenuCommand menuCommand)
279 GameObject verticalScrollSnapRoot = CreateUIElementRoot(
"Vertical Scroll Snap", menuCommand, s_ThickGUIElementSize);
281 GameObject childContent = CreateUIObject(
"Content", verticalScrollSnapRoot);
283 GameObject childPage01 = CreateUIObject(
"Page_01", childContent);
285 GameObject childText = CreateUIObject(
"Text", childPage01);
288 RectTransform rectTransformScrollSnapRoot = verticalScrollSnapRoot.GetComponent<RectTransform>();
289 rectTransformScrollSnapRoot.anchorMin =
new Vector2(0.5f, 0.5f);
290 rectTransformScrollSnapRoot.anchorMax =
new Vector2(0.5f, 0.5f);
291 rectTransformScrollSnapRoot.anchoredPosition = Vector2.zero;
292 rectTransformScrollSnapRoot.sizeDelta =
new Vector2(300f, 150f);
295 Image image = verticalScrollSnapRoot.AddComponent<
Image>();
296 image.sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kBackgroundSpriteResourcePath);
297 image.type =
Image.Type.Sliced;
298 image.color =
new Color(1f, 1f, 1f, 0.392f);
300 ScrollRect sr = verticalScrollSnapRoot.AddComponent<ScrollRect>();
302 sr.horizontal =
false;
306 RectTransform rectTransformContent = childContent.GetComponent<RectTransform>();
307 rectTransformContent.anchorMin = Vector2.zero;
308 rectTransformContent.anchorMax =
new Vector2(1f, 1f);
310 rectTransformContent.sizeDelta = Vector2.zero;
312 sr.content = rectTransformContent;
315 Image pageImage = childPage01.AddComponent<
Image>();
316 pageImage.sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kStandardSpritePath);
317 pageImage.type =
Image.Type.Sliced;
318 pageImage.color = s_DefaultSelectableColor;
320 RectTransform rectTransformPage01 = childPage01.GetComponent<RectTransform>();
321 rectTransformPage01.anchorMin =
new Vector2(0.5f, 0f);
322 rectTransformPage01.anchorMax =
new Vector2(0.5f, 0f);
323 rectTransformPage01.anchoredPosition =
new Vector2(-rectTransformPage01.sizeDelta.x / 2, rectTransformPage01.sizeDelta.y / 2);
326 rectTransformPage01.pivot =
new Vector2(0.5f, 0f);
329 Text text = childText.AddComponent<Text>();
330 text.text =
"Page_01";
331 text.alignment = TextAnchor.MiddleCenter;
332 text.color =
new Color(0.196f, 0.196f, 0.196f);
335 RectTransform rectTransformPage01Text = childText.GetComponent<RectTransform>();
336 rectTransformPage01Text.anchorMin =
new Vector2(0.5f, 0.5f);
337 rectTransformPage01Text.anchorMax =
new Vector2(0.5f, 0.5f);
340 rectTransformPage01Text.pivot =
new Vector2(0.5f, 0.5f);
345 Selection.activeGameObject = verticalScrollSnapRoot;
348 #region New ScrollSnapCode
349 static public void FixedScrollSnapBase(MenuCommand menuCommand,
string name,
ScrollSnap.
ScrollDirection direction,
int itemVisible,
int itemCount, Vector2 itemSize)
351 GameObject scrollSnapRoot = CreateUIElementRoot(name, menuCommand, s_ThickGUIElementSize);
352 GameObject itemList = CreateUIObject(
"List", scrollSnapRoot);
355 RectTransform rectTransformScrollSnapRoot = scrollSnapRoot.GetComponent<RectTransform>();
356 rectTransformScrollSnapRoot.anchorMin =
new Vector2(0.5f, 0.5f);
357 rectTransformScrollSnapRoot.anchorMax =
new Vector2(0.5f, 0.5f);
358 rectTransformScrollSnapRoot.anchoredPosition = Vector2.zero;
362 rectTransformScrollSnapRoot.sizeDelta =
new Vector2(itemVisible * itemSize.x, itemSize.y);
366 rectTransformScrollSnapRoot.sizeDelta =
new Vector2(itemSize.x, itemVisible * itemSize.y);
369 Image image = scrollSnapRoot.AddComponent<
Image>();
370 image.sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kBackgroundSpriteResourcePath);
371 image.type =
Image.Type.Sliced;
372 image.color =
new Color(1f, 1f, 1f, 1f);
374 Mask listMask = scrollSnapRoot.AddComponent<Mask>();
375 listMask.showMaskGraphic =
false;
377 ScrollRect scrollRect = scrollSnapRoot.AddComponent<ScrollRect>();
386 RectTransform rectTransformContent = itemList.GetComponent<RectTransform>();
387 rectTransformContent.anchorMin = Vector2.zero;
388 rectTransformContent.anchorMax =
new Vector2(1f, 1f);
389 rectTransformContent.sizeDelta = Vector2.zero;
390 scrollRect.content = rectTransformContent;
395 itemList.AddComponent<HorizontalLayoutGroup>();
396 ContentSizeFitter sizeFitter = itemList.AddComponent<ContentSizeFitter>();
397 sizeFitter.horizontalFit = ContentSizeFitter.FitMode.MinSize;
401 itemList.AddComponent<VerticalLayoutGroup>();
402 ContentSizeFitter sizeFitter = itemList.AddComponent<ContentSizeFitter>();
403 sizeFitter.verticalFit = ContentSizeFitter.FitMode.MinSize;
407 for (var i = 0; i < itemCount; i++)
409 GameObject item = CreateUIObject(
string.Format(
"Item_{0:00}", i), itemList);
410 GameObject childText = CreateUIObject(
"Text", item);
413 pageImage.sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kStandardSpritePath);
414 pageImage.type =
Image.Type.Sliced;
415 pageImage.color = s_DefaultSelectableColor;
417 LayoutElement elementLayout = item.AddComponent<LayoutElement>();
420 elementLayout.minWidth = itemSize.x;
424 elementLayout.minHeight = itemSize.y;
427 RectTransform rectTransformPage01 = item.GetComponent<RectTransform>();
428 rectTransformPage01.anchorMin =
new Vector2(0f, 0.5f);
429 rectTransformPage01.anchorMax =
new Vector2(0f, 0.5f);
430 rectTransformPage01.pivot =
new Vector2(0f, 0.5f);
433 Text text = childText.AddComponent<Text>();
434 text.text = item.name;
435 text.alignment = TextAnchor.MiddleCenter;
436 text.color =
new Color(0.196f, 0.196f, 0.196f);
439 RectTransform rectTransformPage01Text = childText.GetComponent<RectTransform>();
440 rectTransformPage01Text.anchorMin =
new Vector2(0.5f, 0.5f);
441 rectTransformPage01Text.anchorMax =
new Vector2(0.5f, 0.5f);
442 rectTransformPage01Text.pivot =
new Vector2(0.5f, 0.5f);
444 Selection.activeGameObject = scrollSnapRoot;
447 [MenuItem(
"GameObject/UI/Extensions/Fixed Item Scroll/Snap Horizontal Single Item",
false)]
448 static public void AddFixedItemScrollSnapHorizontalSingle(MenuCommand menuCommand)
450 FixedScrollSnapBase(menuCommand,
"Scroll Snap Horizontal Single",
ScrollSnap.
ScrollDirection.Horizontal, 1, 3,
new Vector2(100, 100));
453 [MenuItem(
"GameObject/UI/Extensions/Fixed Item Scroll/Snap Horizontal Multiple Items",
false)]
454 static public void AddFixedItemScrollSnapHorizontalMultiple(MenuCommand menuCommand)
456 FixedScrollSnapBase(menuCommand,
"Scroll Snap Horizontal Multiple",
ScrollSnap.
ScrollDirection.Horizontal, 3, 15,
new Vector2(100, 100));
459 [MenuItem(
"GameObject/UI/Extensions/Fixed Item Scroll/Snap Vertical Single Item",
false)]
460 static public void AddFixedItemScrollSnapVerticalSingle(MenuCommand menuCommand)
462 FixedScrollSnapBase(menuCommand,
"Scroll Snap Vertical Multiple",
ScrollSnap.
ScrollDirection.Vertical, 1, 3,
new Vector2(100, 100));
465 [MenuItem(
"GameObject/UI/Extensions/Fixed Item Scroll/Snap Vertical Multiple Items",
false)]
466 static public void AddFixedItemScrollSnapVerticalMultiple(MenuCommand menuCommand)
468 FixedScrollSnapBase(menuCommand,
"Scroll Snap Vertical Multiple",
ScrollSnap.
ScrollDirection.Vertical, 3, 15,
new Vector2(100, 100));
472 #region ContentScrollSnapHorizontal
473 [MenuItem(
"GameObject/UI/Extensions/Content Scroll Snap Horizontal",
false)]
474 static public void AddContentScrollSnapHorizontal(MenuCommand menuCommand)
476 GameObject contentScrollSnapRoot = CreateUIElementRoot(
"Content Scroll Snap Horizontal", menuCommand, s_ThickGUIElementSize);
478 GameObject childContent = CreateUIObject(
"Content", contentScrollSnapRoot);
480 GameObject childPage01 = CreateUIObject(
"Position 1", childContent);
482 GameObject childPage02 = CreateUIObject(
"Position 2", childContent);
484 GameObject childPage03 = CreateUIObject(
"Position 3", childContent);
486 GameObject childPage04 = CreateUIObject(
"Position 4", childContent);
488 GameObject childPage05 = CreateUIObject(
"Position 5", childContent);
491 RectTransform contentScrollSnapRectTransform = ((RectTransform)contentScrollSnapRoot.transform);
492 contentScrollSnapRectTransform.anchorMin =
new Vector2(0.5f, 0.5f);
493 contentScrollSnapRectTransform.anchorMax =
new Vector2(0.5f, 0.5f);
494 contentScrollSnapRectTransform.anchoredPosition = Vector2.zero;
495 contentScrollSnapRectTransform.sizeDelta =
new Vector2(100, 200);
497 Image image = contentScrollSnapRoot.AddComponent<
Image>();
499 image.color =
new Color(1, 0, 0, .5f);
501 ScrollRect sr = contentScrollSnapRoot.AddComponent<ScrollRect>();
503 sr.horizontal =
true;
506 RectTransform contentTransform = ((RectTransform)childContent.transform);
507 contentTransform.anchorMin =
new Vector2(.5f, .5f);
508 contentTransform.anchorMax =
new Vector2(.5f, .5f);
509 contentTransform.pivot =
new Vector2(.5f, .5f);
510 contentTransform.sizeDelta =
new Vector2(200, 300);
512 Image contentImage = childContent.AddComponent<
Image>();
513 contentImage.sprite =
null;
514 contentImage.color =
new Color(0, 0, 1, .5f);
516 sr.content = contentTransform;
519 RectTransform childPage01Transform = (RectTransform)childPage01.transform;
520 childPage01Transform.anchorMin =
new Vector2(0, 1);
521 childPage01Transform.anchorMax =
new Vector2(0, 1);
522 childPage01Transform.pivot =
new Vector2(0, 1);
523 childPage01Transform.anchoredPosition =
new Vector2(0, -125);
525 Image childPage01Image = childPage01.AddComponent<
Image>();
526 childPage01Image.sprite =
null;
527 childPage01Image.color =
Color.white;
530 RectTransform childPage02Transform = (RectTransform)childPage02.transform;
531 childPage02Transform.anchorMin =
new Vector2(0, 1);
532 childPage02Transform.anchorMax =
new Vector2(0, 1);
533 childPage02Transform.pivot =
new Vector2(0, 1);
534 childPage02Transform.anchoredPosition =
new Vector2(175, -150);
536 Image childPage02Image = childPage02.AddComponent<
Image>();
537 childPage02Image.sprite =
null;
538 childPage02Image.color =
Color.white;
541 RectTransform childPage03Transform = (RectTransform)childPage03.transform;
542 childPage03Transform.anchorMin =
new Vector2(0, 1);
543 childPage03Transform.anchorMax =
new Vector2(0, 1);
544 childPage03Transform.pivot =
new Vector2(0, 1);
545 childPage03Transform.anchoredPosition =
new Vector2(315, -125);
546 childPage03Transform.sizeDelta =
new Vector2(50, 100);
548 Image childPage03Image = childPage03.AddComponent<
Image>();
549 childPage03Image.sprite =
null;
550 childPage03Image.color =
Color.white;
553 RectTransform childPage04Transform = (RectTransform)childPage04.transform;
554 childPage04Transform.anchorMin =
new Vector2(0, 1);
555 childPage04Transform.anchorMax =
new Vector2(0, 1);
556 childPage04Transform.pivot =
new Vector2(0, 1);
557 childPage04Transform.anchoredPosition =
new Vector2(490, -110);
559 Image childPage04Image = childPage04.AddComponent<
Image>();
560 childPage04Image.sprite =
null;
561 childPage04Image.color =
Color.white;
564 RectTransform childPage05Transform = (RectTransform)childPage05.transform;
565 childPage05Transform.anchorMin =
new Vector2(0, 1);
566 childPage05Transform.anchorMax =
new Vector2(0, 1);
567 childPage05Transform.pivot =
new Vector2(0, 1);
568 childPage05Transform.anchoredPosition =
new Vector2(630, -180);
570 Image childPage05Image = childPage05.AddComponent<
Image>();
571 childPage05Image.sprite =
null;
572 childPage05Image.color =
Color.white;
581 #region UIVertical Scroller
582 [MenuItem(
"GameObject/UI/Extensions/UI Vertical Scroller",
false)]
583 static public void AddUIVerticallScroller(MenuCommand menuCommand)
585 GameObject uiVerticalScrollerRoot = CreateUIElementRoot(
"UI Vertical Scroller", menuCommand, s_ThickGUIElementSize);
587 GameObject uiScrollerCenter = CreateUIObject(
"Center", uiVerticalScrollerRoot);
589 GameObject childContent = CreateUIObject(
"Content", uiVerticalScrollerRoot);
592 RectTransform rectTransformScrollSnapRoot = uiVerticalScrollerRoot.GetComponent<RectTransform>();
593 rectTransformScrollSnapRoot.anchorMin =
new Vector2(0.5f, 0.5f);
594 rectTransformScrollSnapRoot.anchorMax =
new Vector2(0.5f, 0.5f);
595 rectTransformScrollSnapRoot.anchoredPosition = Vector2.zero;
596 rectTransformScrollSnapRoot.sizeDelta =
new Vector2(500f, 150f);
599 ScrollRect sr = uiVerticalScrollerRoot.AddComponent<ScrollRect>();
601 sr.horizontal =
false;
602 sr.movementType = ScrollRect.MovementType.Unrestricted;
606 RectTransform rectTransformCenter = uiScrollerCenter.GetComponent<RectTransform>();
607 rectTransformCenter.anchorMin =
new Vector2(0f, 0.3f);
608 rectTransformCenter.anchorMax =
new Vector2(1f, 0.6f);
609 rectTransformCenter.sizeDelta = Vector2.zero;
611 uiscr.center = uiScrollerCenter.GetComponent<RectTransform>();
614 RectTransform rectTransformContent = childContent.GetComponent<RectTransform>();
615 rectTransformContent.anchorMin = Vector2.zero;
616 rectTransformContent.anchorMax =
new Vector2(1f, 1f);
617 rectTransformContent.sizeDelta = Vector2.zero;
619 sr.content = rectTransformContent;
622 for (
int i = 0; i < 10; i++)
624 GameObject childPage = CreateUIObject(
"Page_" + i, childContent);
626 GameObject childText = CreateUIObject(
"Text", childPage);
629 Image pageImage = childPage.AddComponent<
Image>();
630 pageImage.sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kStandardSpritePath);
631 pageImage.type =
Image.Type.Sliced;
632 pageImage.color = s_DefaultSelectableColor;
634 RectTransform rectTransformPage = childPage.GetComponent<RectTransform>();
635 rectTransformPage.anchorMin =
new Vector2(0f, 0.5f);
636 rectTransformPage.anchorMax =
new Vector2(1f, 0.5f);
637 rectTransformPage.sizeDelta =
new Vector2(0f, 80f);
638 rectTransformPage.pivot =
new Vector2(0.5f, 0.5f);
639 rectTransformPage.localPosition =
new Vector3(0, 80 * i, 0);
640 childPage.AddComponent<
Button>();
642 var childCG = childPage.AddComponent<CanvasGroup>();
643 childCG.interactable =
false;
646 Text text = childText.AddComponent<Text>();
647 text.text =
"Item_" + i;
648 text.alignment = TextAnchor.MiddleCenter;
649 text.color =
new Color(0.196f, 0.196f, 0.196f);
652 RectTransform rectTransformPageText = childText.GetComponent<RectTransform>();
653 rectTransformPageText.anchorMin =
new Vector2(0.5f, 0.5f);
654 rectTransformPageText.anchorMax =
new Vector2(0.5f, 0.5f);
655 rectTransformPageText.pivot =
new Vector2(0.5f, 0.5f);
658 Selection.activeGameObject = uiVerticalScrollerRoot;
663 [MenuItem(
"GameObject/UI/Extensions/UI Button",
false)]
664 static public void AddUIButton(MenuCommand menuCommand)
666 GameObject uiButtonRoot = CreateUIElementRoot(
"UI Button", menuCommand, s_ThickGUIElementSize);
667 GameObject childText = CreateUIObject(
"Text", uiButtonRoot);
669 Image image = uiButtonRoot.AddComponent<
Image>();
670 image.sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kStandardSpritePath);
671 image.type =
Image.Type.Sliced;
672 image.color = s_DefaultSelectableColor;
676 SetDefaultColorTransitionValues(bt);
678 Text text = childText.AddComponent<Text>();
679 text.text =
"Button";
680 text.alignment = TextAnchor.MiddleCenter;
681 text.color =
new Color(0.196f, 0.196f, 0.196f);
683 RectTransform textRectTransform = childText.GetComponent<RectTransform>();
684 textRectTransform.anchorMin = Vector2.zero;
685 textRectTransform.anchorMax = Vector2.one;
686 textRectTransform.sizeDelta = Vector2.zero;
688 Selection.activeGameObject = uiButtonRoot;
693 [MenuItem(
"GameObject/UI/Extensions/UI Flippable",
false)]
694 static public void AddUIFlippableImage(MenuCommand menuCommand)
696 GameObject go = CreateUIElementRoot(
"UI Flippable", menuCommand, s_ImageGUIElementSize);
697 go.AddComponent<
Image>();
699 Selection.activeGameObject = go;
703 #region UI WindowBase
704 [MenuItem(
"GameObject/UI/Extensions/UI Window Base",
false)]
705 static public void AddUIWindowBase(MenuCommand menuCommand)
707 GameObject go = CreateUIElementRoot(
"UI Window Base", menuCommand, s_ThickGUIElementSize);
709 go.AddComponent<
Image>();
710 Selection.activeGameObject = go;
715 [MenuItem(
"GameObject/UI/Extensions/Accordion/Accordion Group",
false)]
716 static public void AddAccordionGroup(MenuCommand menuCommand)
718 GameObject go = CreateUIElementRoot(
"Accordion Group", menuCommand, s_ThickGUIElementSize);
719 go.AddComponent<VerticalLayoutGroup>();
720 go.AddComponent<ContentSizeFitter>();
721 go.AddComponent<ToggleGroup>();
723 Selection.activeGameObject = go;
726 [MenuItem(
"GameObject/UI/Extensions/Accordion/Accordion Element",
false)]
727 static public void AddAccordionElement(MenuCommand menuCommand)
729 GameObject go = CreateUIElementRoot(
"Accordion Element", menuCommand, s_ThickGUIElementSize);
730 go.AddComponent<LayoutElement>();
732 Selection.activeGameObject = go;
737 #region Drop Down controls
738 [MenuItem(
"GameObject/UI/Extensions/AutoComplete ComboBox",
false)]
739 static public void AddAutoCompleteComboBox(MenuCommand menuCommand)
741 GameObject autoCompleteComboBoxRoot = CreateUIElementRoot(
"AutoCompleteComboBox", menuCommand, s_ThickGUIElementSize);
744 GameObject itemTemplate = AddButtonAsChild(autoCompleteComboBoxRoot);
747 GameObject inputField = AddInputFieldAsChild(autoCompleteComboBoxRoot);
750 GameObject overlay = CreateUIObject(
"Overlay", autoCompleteComboBoxRoot);
751 GameObject overlayScrollPanel = CreateUIObject(
"ScrollPanel", overlay);
752 GameObject overlayScrollPanelItems = CreateUIObject(
"Items", overlayScrollPanel);
753 GameObject overlayScrollPanelScrollBar = AddScrollbarAsChild(overlayScrollPanel);
756 GameObject arrowButton = AddButtonAsChild(autoCompleteComboBoxRoot);
760 var cbbRT = autoCompleteComboBoxRoot.GetComponent<RectTransform>();
763 itemTemplate.name =
"ItemTemplate";
764 var itemTemplateRT = itemTemplate.GetComponent<RectTransform>();
765 itemTemplateRT.sizeDelta = cbbRT.sizeDelta;
766 var itemTemplateButton = itemTemplate.GetComponent<
Button>();
767 itemTemplateButton.transition = Selectable.Transition.None;
768 var itemTemplateLayoutElement = itemTemplate.AddComponent<LayoutElement>();
769 itemTemplateLayoutElement.minHeight = cbbRT.rect.height;
770 itemTemplate.SetActive(
false);
773 var inputFieldRT = inputField.GetComponent<RectTransform>();
774 inputFieldRT.anchorMin = Vector2.zero;
775 inputFieldRT.anchorMax = Vector2.one;
776 inputFieldRT.sizeDelta = Vector2.zero;
777 Events.UnityEventTools.AddPersistentListener<
string>(inputField.GetComponent<InputField>().onValueChanged,
new UnityEngine.
Events.UnityAction<
string>(autoCompleteComboBox.OnValueChanged));
780 var overlayRT = overlay.GetComponent<RectTransform>();
781 overlayRT.anchorMin =
new Vector2(0f, 1f);
782 overlayRT.anchorMax =
new Vector2(0f, 1f);
783 overlayRT.sizeDelta =
new Vector2(0f, 1f);
784 overlayRT.pivot =
new Vector2(0f, 1f);
785 overlay.AddComponent<
Image>().color =
new Color(0.243f, 0.871f, 0f, 0f);
786 Events.UnityEventTools.AddBoolPersistentListener(overlay.AddComponent<
Button>().onClick,
new UnityEngine.
Events.UnityAction<
bool>(autoCompleteComboBox.ToggleDropdownPanel),
true);
788 var overlayScrollPanelRT = overlayScrollPanel.GetComponent<RectTransform>();
789 overlayScrollPanelRT.position +=
new Vector3(0, -cbbRT.sizeDelta.y, 0);
790 overlayScrollPanelRT.anchorMin =
new Vector2(0f, 1f);
791 overlayScrollPanelRT.anchorMax =
new Vector2(0f, 1f);
792 overlayScrollPanelRT.sizeDelta =
new Vector2(cbbRT.sizeDelta.x, cbbRT.sizeDelta.y * 3);
793 overlayScrollPanelRT.pivot =
new Vector2(0f, 1f);
794 overlayScrollPanel.AddComponent<
Image>();
795 overlayScrollPanel.AddComponent<Mask>();
796 var scrollRect = overlayScrollPanel.AddComponent<ScrollRect>();
797 scrollRect.horizontal =
false;
798 scrollRect.movementType = ScrollRect.MovementType.Clamped;
799 scrollRect.verticalScrollbar = overlayScrollPanelScrollBar.GetComponent<Scrollbar>();
801 var overlayScrollPanelItemsRT = overlayScrollPanelItems.GetComponent<RectTransform>();
802 overlayScrollPanelItemsRT.position +=
new Vector3(5, 0, 0);
803 overlayScrollPanelItemsRT.anchorMin =
new Vector2(0f, 1f);
804 overlayScrollPanelItemsRT.anchorMax =
new Vector2(0f, 1f);
805 overlayScrollPanelItemsRT.sizeDelta =
new Vector2(120f, 5f);
806 overlayScrollPanelItemsRT.pivot =
new Vector2(0f, 1f);
807 scrollRect.content = overlayScrollPanelItemsRT;
808 var overlayScrollPanelItemsVLG = overlayScrollPanelItems.AddComponent<VerticalLayoutGroup>();
809 overlayScrollPanelItemsVLG.padding =
new RectOffset(0, 0, 5, 0);
810 var overlayScrollPanelItemsFitter = overlayScrollPanelItems.AddComponent<ContentSizeFitter>();
811 overlayScrollPanelItemsFitter.verticalFit = ContentSizeFitter.FitMode.MinSize;
813 var overlayScrollPanelScrollbarRT = overlayScrollPanelScrollBar.GetComponent<RectTransform>();
814 overlayScrollPanelScrollbarRT.anchorMin =
new Vector2(1f, 0f);
815 overlayScrollPanelScrollbarRT.anchorMax = Vector2.one;
816 overlayScrollPanelScrollbarRT.sizeDelta =
new Vector2(cbbRT.sizeDelta.y, 0f);
817 overlayScrollPanelScrollbarRT.pivot = Vector2.one;
818 overlayScrollPanelScrollbarRT.GetComponent<Scrollbar>().direction = Scrollbar.Direction.BottomToTop;
819 overlayScrollPanelScrollBar.transform.GetChild(0).name =
"SlidingArea";
822 arrowButton.name =
"ArrowBtn";
823 var arrowButtonRT = arrowButton.GetComponent<RectTransform>();
824 arrowButtonRT.anchorMin = Vector2.one;
825 arrowButtonRT.anchorMax = Vector2.one;
826 arrowButtonRT.sizeDelta =
new Vector2(cbbRT.sizeDelta.y, cbbRT.sizeDelta.y);
827 arrowButtonRT.pivot = Vector2.one;
828 Events.UnityEventTools.AddBoolPersistentListener(arrowButton.GetComponent<
Button>().onClick,
new UnityEngine.
Events.UnityAction<
bool>(autoCompleteComboBox.ToggleDropdownPanel),
true);
829 arrowButton.GetComponentInChildren<Text>().text =
"â–¼";
831 Selection.activeGameObject = autoCompleteComboBoxRoot;
834 [MenuItem(
"GameObject/UI/Extensions/ComboBox",
false)]
835 static public void AddComboBox(MenuCommand menuCommand)
837 GameObject comboBoxRoot = CreateUIElementRoot(
"ComboBox", menuCommand, s_ThickGUIElementSize);
840 GameObject itemTemplate = AddButtonAsChild(comboBoxRoot);
843 GameObject inputField = AddInputFieldAsChild(comboBoxRoot);
846 GameObject overlay = CreateUIObject(
"Overlay", comboBoxRoot);
847 GameObject overlayScrollPanel = CreateUIObject(
"ScrollPanel", overlay);
848 GameObject overlayScrollPanelItems = CreateUIObject(
"Items", overlayScrollPanel);
849 GameObject overlayScrollPanelScrollBar = AddScrollbarAsChild(overlayScrollPanel);
852 GameObject arrowButton = AddButtonAsChild(comboBoxRoot);
855 var comboBox = comboBoxRoot.AddComponent<
ComboBox>();
856 var cbbRT = comboBoxRoot.GetComponent<RectTransform>();
859 itemTemplate.name =
"ItemTemplate";
860 var itemTemplateRT = itemTemplate.GetComponent<RectTransform>();
861 itemTemplateRT.sizeDelta = cbbRT.sizeDelta;
862 var itemTemplateButton = itemTemplate.GetComponent<
Button>();
863 itemTemplateButton.transition = Selectable.Transition.None;
864 var itemTemplateLayoutElement = itemTemplate.AddComponent<LayoutElement>();
865 itemTemplateLayoutElement.minHeight = cbbRT.rect.height;
866 itemTemplate.SetActive(
false);
869 var inputFieldRT = inputField.GetComponent<RectTransform>();
870 inputFieldRT.anchorMin = Vector2.zero;
871 inputFieldRT.anchorMax = Vector2.one;
872 inputFieldRT.sizeDelta = Vector2.zero;
873 Events.UnityEventTools.AddPersistentListener<
string>(inputField.GetComponent<InputField>().onValueChanged,
new UnityEngine.
Events.UnityAction<
string>(comboBox.OnValueChanged));
876 var overlayRT = overlay.GetComponent<RectTransform>();
877 overlayRT.anchorMin =
new Vector2(0f, 1f);
878 overlayRT.anchorMax =
new Vector2(0f, 1f);
879 overlayRT.sizeDelta =
new Vector2(0f, 1f);
880 overlayRT.pivot =
new Vector2(0f, 1f);
881 overlay.AddComponent<
Image>().color =
new Color(0.243f, 0.871f, 0f, 0f);
882 Events.UnityEventTools.AddBoolPersistentListener(overlay.AddComponent<
Button>().onClick,
new UnityEngine.
Events.UnityAction<
bool>(comboBox.ToggleDropdownPanel),
true);
884 var overlayScrollPanelRT = overlayScrollPanel.GetComponent<RectTransform>();
885 overlayScrollPanelRT.position +=
new Vector3(0, -cbbRT.sizeDelta.y, 0);
886 overlayScrollPanelRT.anchorMin =
new Vector2(0f, 1f);
887 overlayScrollPanelRT.anchorMax =
new Vector2(0f, 1f);
888 overlayScrollPanelRT.sizeDelta =
new Vector2(cbbRT.sizeDelta.x, cbbRT.sizeDelta.y * 3);
889 overlayScrollPanelRT.pivot =
new Vector2(0f, 1f);
890 overlayScrollPanel.AddComponent<
Image>();
891 overlayScrollPanel.AddComponent<Mask>();
892 var scrollRect = overlayScrollPanel.AddComponent<ScrollRect>();
893 scrollRect.horizontal =
false;
894 scrollRect.movementType = ScrollRect.MovementType.Clamped;
895 scrollRect.verticalScrollbar = overlayScrollPanelScrollBar.GetComponent<Scrollbar>();
897 var overlayScrollPanelItemsRT = overlayScrollPanelItems.GetComponent<RectTransform>();
898 overlayScrollPanelItemsRT.position +=
new Vector3(5, 0, 0);
899 overlayScrollPanelItemsRT.anchorMin =
new Vector2(0f, 1f);
900 overlayScrollPanelItemsRT.anchorMax =
new Vector2(0f, 1f);
901 overlayScrollPanelItemsRT.sizeDelta =
new Vector2(120f, 5f);
902 overlayScrollPanelItemsRT.pivot =
new Vector2(0f, 1f);
903 scrollRect.content = overlayScrollPanelItemsRT;
904 var overlayScrollPanelItemsVLG = overlayScrollPanelItems.AddComponent<VerticalLayoutGroup>();
905 overlayScrollPanelItemsVLG.padding =
new RectOffset(0, 0, 5, 0);
906 var overlayScrollPanelItemsFitter = overlayScrollPanelItems.AddComponent<ContentSizeFitter>();
907 overlayScrollPanelItemsFitter.verticalFit = ContentSizeFitter.FitMode.MinSize;
909 var overlayScrollPanelScrollbarRT = overlayScrollPanelScrollBar.GetComponent<RectTransform>();
910 overlayScrollPanelScrollbarRT.anchorMin =
new Vector2(1f, 0f);
911 overlayScrollPanelScrollbarRT.anchorMax = Vector2.one;
912 overlayScrollPanelScrollbarRT.sizeDelta =
new Vector2(cbbRT.sizeDelta.y, 0f);
913 overlayScrollPanelScrollbarRT.pivot = Vector2.one;
914 overlayScrollPanelScrollbarRT.GetComponent<Scrollbar>().direction = Scrollbar.Direction.BottomToTop;
915 overlayScrollPanelScrollBar.transform.GetChild(0).name =
"SlidingArea";
918 arrowButton.name =
"ArrowBtn";
919 var arrowButtonRT = arrowButton.GetComponent<RectTransform>();
920 arrowButtonRT.anchorMin = Vector2.one;
921 arrowButtonRT.anchorMax = Vector2.one;
922 arrowButtonRT.sizeDelta =
new Vector2(cbbRT.sizeDelta.y, cbbRT.sizeDelta.y);
923 arrowButtonRT.pivot = Vector2.one;
924 Events.UnityEventTools.AddBoolPersistentListener(arrowButton.GetComponent<
Button>().onClick,
new UnityEngine.
Events.UnityAction<
bool>(comboBox.ToggleDropdownPanel),
true);
925 arrowButton.GetComponentInChildren<Text>().text =
"â–¼";
927 Selection.activeGameObject = comboBoxRoot;
930 [MenuItem(
"GameObject/UI/Extensions/DropDownList",
false)]
931 static public void AddDropDownList(MenuCommand menuCommand)
933 GameObject dropDownListRoot = CreateUIElementRoot(
"DropDownList", menuCommand, s_ThickGUIElementSize);
936 GameObject itemTemplate = AddButtonAsChild(dropDownListRoot);
937 GameObject itemTemplateImage = AddImageAsChild(itemTemplate);
938 itemTemplateImage.GetComponent<Transform>().SetSiblingIndex(0);
941 GameObject mainButton = AddButtonAsChild(dropDownListRoot);
942 GameObject mainButtonImage = AddImageAsChild(mainButton);
943 mainButtonImage.GetComponent<Transform>().SetSiblingIndex(0);
946 GameObject overlay = CreateUIObject(
"Overlay", dropDownListRoot);
947 GameObject overlayScrollPanel = CreateUIObject(
"ScrollPanel", overlay);
948 GameObject overlayScrollPanelItems = CreateUIObject(
"Items", overlayScrollPanel);
949 GameObject overlayScrollPanelScrollBar = AddScrollbarAsChild(overlayScrollPanel);
952 GameObject arrowText = AddTextAsChild(dropDownListRoot);
955 var dropDownList = dropDownListRoot.AddComponent<
DropDownList>();
956 var cbbRT = dropDownListRoot.GetComponent<RectTransform>();
959 itemTemplate.name =
"ItemTemplate";
960 var itemTemplateRT = itemTemplate.GetComponent<RectTransform>();
961 itemTemplateRT.sizeDelta = cbbRT.sizeDelta;
962 var itemTemplateButton = itemTemplate.GetComponent<
Button>();
963 itemTemplateButton.transition = Selectable.Transition.None;
964 var itemTemplateLayoutElement = itemTemplate.AddComponent<LayoutElement>();
965 itemTemplateLayoutElement.minHeight = cbbRT.rect.height;
966 itemTemplate.SetActive(
false);
968 var itemTemplateImageRT = itemTemplateImage.GetComponent<RectTransform>();
969 itemTemplateImageRT.anchorMin = Vector2.zero;
970 itemTemplateImageRT.anchorMax =
new Vector2(0f, 1f);
971 itemTemplateImageRT.pivot =
new Vector2(0f, 1f);
972 itemTemplateImageRT.sizeDelta = Vector2.one;
973 itemTemplateImageRT.offsetMin =
new Vector2(4f, 4f);
974 itemTemplateImageRT.offsetMax =
new Vector2(22f, -4f);
975 itemTemplateImage.GetComponent<
Image>().color =
new Color(0, 0, 0, 0);
978 mainButton.name =
"MainButton";
979 var mainButtonRT = mainButton.GetComponent<RectTransform>();
980 mainButtonRT.anchorMin = Vector2.zero;
981 mainButtonRT.anchorMax = Vector2.one;
982 mainButtonRT.sizeDelta = Vector2.zero;
983 Events.UnityEventTools.AddBoolPersistentListener(mainButton.GetComponent<
Button>().onClick,
new UnityEngine.
Events.UnityAction<
bool>(dropDownList.ToggleDropdownPanel),
true);
984 var mainButtonText = mainButton.GetComponentInChildren<Text>();
985 mainButtonText.alignment = TextAnchor.MiddleLeft;
986 mainButtonText.text =
"Select Item...";
987 var mainButtonTextRT = mainButtonText.GetComponent<RectTransform>();
988 mainButtonTextRT.anchorMin = Vector2.zero;
989 mainButtonTextRT.anchorMin = Vector2.zero;
990 mainButtonTextRT.pivot =
new Vector2(0f, 1f);
991 mainButtonTextRT.offsetMin =
new Vector2(10f, 0f);
992 mainButtonTextRT.offsetMax =
new Vector2(-4f, 0f);
994 var mainButtonImageRT = mainButtonImage.GetComponent<RectTransform>();
995 mainButtonImageRT.anchorMin = Vector2.zero;
996 mainButtonImageRT.anchorMax =
new Vector2(0f, 1f);
997 mainButtonImageRT.pivot =
new Vector2(0f, 1f);
998 mainButtonImageRT.sizeDelta = Vector2.one;
999 mainButtonImageRT.offsetMin =
new Vector2(4f, 4f);
1000 mainButtonImageRT.offsetMax =
new Vector2(22f, -4f);
1001 mainButtonImageRT.GetComponent<
Image>().color =
new Color(1, 1, 1, 0);
1005 var overlayRT = overlay.GetComponent<RectTransform>();
1006 overlayRT.anchorMin =
new Vector2(0f, 1f);
1007 overlayRT.anchorMax =
new Vector2(0f, 1f);
1008 overlayRT.sizeDelta =
new Vector2(0f, 1f);
1009 overlayRT.pivot =
new Vector2(0f, 1f);
1010 overlay.AddComponent<
Image>().color =
new Color(0.243f, 0.871f, 0f, 0f);
1011 Events.UnityEventTools.AddBoolPersistentListener(overlay.AddComponent<
Button>().onClick,
new UnityEngine.
Events.UnityAction<
bool>(dropDownList.ToggleDropdownPanel),
true);
1013 var overlayScrollPanelRT = overlayScrollPanel.GetComponent<RectTransform>();
1014 overlayScrollPanelRT.position +=
new Vector3(0, -cbbRT.sizeDelta.y, 0);
1015 overlayScrollPanelRT.anchorMin =
new Vector2(0f, 1f);
1016 overlayScrollPanelRT.anchorMax =
new Vector2(0f, 1f);
1017 overlayScrollPanelRT.sizeDelta =
new Vector2(cbbRT.sizeDelta.x, cbbRT.sizeDelta.y * 3);
1018 overlayScrollPanelRT.pivot =
new Vector2(0f, 1f);
1019 overlayScrollPanel.AddComponent<
Image>();
1020 overlayScrollPanel.AddComponent<Mask>();
1021 var scrollRect = overlayScrollPanel.AddComponent<ScrollRect>();
1022 scrollRect.horizontal =
false;
1023 scrollRect.movementType = ScrollRect.MovementType.Clamped;
1024 scrollRect.verticalScrollbar = overlayScrollPanelScrollBar.GetComponent<Scrollbar>();
1026 var overlayScrollPanelItemsRT = overlayScrollPanelItems.GetComponent<RectTransform>();
1027 overlayScrollPanelItemsRT.position +=
new Vector3(5, 0, 0);
1028 overlayScrollPanelItemsRT.anchorMin =
new Vector2(0f, 1f);
1029 overlayScrollPanelItemsRT.anchorMax =
new Vector2(0f, 1f);
1030 overlayScrollPanelItemsRT.sizeDelta =
new Vector2(120f, 5f);
1031 overlayScrollPanelItemsRT.pivot =
new Vector2(0f, 1f);
1032 scrollRect.content = overlayScrollPanelItemsRT;
1033 var overlayScrollPanelItemsVLG = overlayScrollPanelItems.AddComponent<VerticalLayoutGroup>();
1034 overlayScrollPanelItemsVLG.padding =
new RectOffset(0, 0, 5, 0);
1035 var overlayScrollPanelItemsFitter = overlayScrollPanelItems.AddComponent<ContentSizeFitter>();
1036 overlayScrollPanelItemsFitter.verticalFit = ContentSizeFitter.FitMode.MinSize;
1038 var overlayScrollPanelScrollbarRT = overlayScrollPanelScrollBar.GetComponent<RectTransform>();
1039 overlayScrollPanelScrollbarRT.anchorMin =
new Vector2(1f, 0f);
1040 overlayScrollPanelScrollbarRT.anchorMax = Vector2.one;
1041 overlayScrollPanelScrollbarRT.sizeDelta =
new Vector2(cbbRT.sizeDelta.y, 0f);
1042 overlayScrollPanelScrollbarRT.pivot = Vector2.one;
1043 overlayScrollPanelScrollbarRT.GetComponent<Scrollbar>().direction = Scrollbar.Direction.BottomToTop;
1044 overlayScrollPanelScrollBar.transform.GetChild(0).name =
"SlidingArea";
1047 arrowText.name =
"Arrow";
1048 var arrowTextRT = arrowText.GetComponent<RectTransform>();
1049 arrowTextRT.anchorMin =
new Vector2(1f, 0f);
1050 arrowTextRT.anchorMax = Vector2.one;
1051 arrowTextRT.sizeDelta =
new Vector2(cbbRT.sizeDelta.y, cbbRT.sizeDelta.y);
1052 arrowTextRT.pivot =
new Vector2(1f, 0.5f);
1053 var arrowTextComponent = arrowText.GetComponent<Text>();
1054 arrowTextComponent.text =
"â–¼";
1055 arrowTextComponent.alignment = TextAnchor.MiddleCenter;
1056 var arrowTextCanvasGroup = arrowText.AddComponent<CanvasGroup>();
1057 arrowTextCanvasGroup.interactable =
false;
1058 arrowTextCanvasGroup.blocksRaycasts =
false;
1059 Selection.activeGameObject = dropDownListRoot;
1063 #region RTS Selection box
1064 [MenuItem(
"GameObject/UI/Extensions/Selection Box",
false)]
1065 static public void AddSelectionBox(MenuCommand menuCommand)
1067 var go = CreateNewUI();
1068 go.name =
"Selection Box";
1069 GameObjectUtility.SetParentAndAlign(go, menuCommand.context as GameObject);
1070 RectTransform rect = go.transform as RectTransform;
1071 rect.anchorMin = Vector2.zero;
1072 rect.anchorMax = Vector2.one;
1073 rect.anchoredPosition = Vector2.zero;
1074 rect.sizeDelta = Vector2.zero;
1077 image.sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kBackgroundSpriteResourcePath);
1078 image.type =
Image.Type.Sliced;
1079 image.fillCenter =
false;
1080 image.color =
new Color(1f, 1f, 1f, 0.392f);
1085 selectableArea.
color =
new Color(0.816f, 0.816f, 0.816f, 0.353f);
1088 GameObject childSelectableItem = CreateUIObject(
"Selectable", go);
1089 childSelectableItem.AddComponent<
Image>();
1093 Selection.activeGameObject = go;
1097 #region Bound Tooltip
1098 [MenuItem(
"GameObject/UI/Extensions/Bound Tooltip/Tooltip",
false)]
1099 static public void AddBoundTooltip(MenuCommand menuCommand)
1101 GameObject go = CreateUIElementRoot(
"Tooltip", menuCommand, s_ImageGUIElementSize);
1103 tooltip.
text =
"This is my Tooltip Text";
1104 var boundTooltip = go.AddComponent<
Image>();
1105 boundTooltip.sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kBackgroundSpriteResourcePath);
1108 CreateToolTipItem(
false, go);
1109 Selection.activeGameObject = go;
1112 private static void CreateToolTipItem(
bool select)
1114 CreateToolTipItem(select,
null);
1117 private static void CreateToolTipItem(
bool select, GameObject parent)
1122 var boundTooltipItem = CreateUIObject(
"ToolTipItem", parent.GetComponentInParent<Canvas>().gameObject);
1124 var boundTooltipItemCanvasGroup = boundTooltipItem.AddComponent<CanvasGroup>();
1125 boundTooltipItemCanvasGroup.interactable =
false;
1126 boundTooltipItemCanvasGroup.blocksRaycasts =
false;
1127 var boundTooltipItemImage = boundTooltipItem.AddComponent<
Image>();
1128 boundTooltipItemImage.sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kBackgroundSpriteResourcePath);
1129 var boundTooltipItemText = CreateUIObject(
"Text", boundTooltipItem);
1130 var boundTooltipItemTextRT = boundTooltipItemText.GetComponent<RectTransform>();
1131 boundTooltipItemTextRT.anchorMin = Vector2.zero;
1132 boundTooltipItemTextRT.anchorMax = Vector2.one;
1133 boundTooltipItemTextRT.sizeDelta = Vector2.one;
1134 var boundTooltipItemTextcomponent = boundTooltipItemText.AddComponent<Text>();
1135 boundTooltipItemTextcomponent.alignment = TextAnchor.MiddleCenter;
1136 Undo.RegisterCreatedObjectUndo(boundTooltipItem,
"Create " + boundTooltipItem.name);
1139 if (select && btti !=
null)
1141 Selection.activeGameObject = btti.gameObject;
1147 #region Progress bar
1148 [MenuItem(
"GameObject/UI/Extensions/Progress Bar",
false)]
1149 static public void AddSlider(MenuCommand menuCommand)
1152 GameObject root = CreateUIElementRoot(
"Progress Bar", menuCommand, s_ThinGUIElementSize);
1154 GameObject background = CreateUIObject(
"Background", root);
1155 GameObject fillArea = CreateUIObject(
"Fill Area", root);
1156 GameObject fill = CreateUIObject(
"Fill", fillArea);
1159 Image backgroundImage = background.AddComponent<
Image>();
1160 backgroundImage.sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kBackgroundSpriteResourcePath);
1161 backgroundImage.type =
Image.Type.Sliced;
1162 backgroundImage.color = s_DefaultSelectableColor;
1163 RectTransform backgroundRect = background.GetComponent<RectTransform>();
1164 backgroundRect.anchorMin =
new Vector2(0, 0.25f);
1165 backgroundRect.anchorMax =
new Vector2(1, 0.75f);
1166 backgroundRect.sizeDelta =
new Vector2(0, 0);
1169 RectTransform fillAreaRect = fillArea.GetComponent<RectTransform>();
1170 fillAreaRect.anchorMin =
new Vector2(0, 0.25f);
1171 fillAreaRect.anchorMax =
new Vector2(1, 0.75f);
1172 fillAreaRect.anchoredPosition = Vector2.zero;
1173 fillAreaRect.sizeDelta = Vector2.zero;
1176 Image fillImage = fill.AddComponent<
Image>();
1177 fillImage.sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kStandardSpritePath);
1178 fillImage.type =
Image.Type.Sliced;
1179 fillImage.color = s_DefaultSelectableColor;
1181 RectTransform fillRect = fill.GetComponent<RectTransform>();
1182 fillRect.sizeDelta = Vector2.zero;
1185 Slider slider = root.AddComponent<Slider>();
1187 slider.fillRect = fill.GetComponent<RectTransform>();
1188 slider.targetGraphic = fillImage;
1189 slider.direction = Slider.Direction.LeftToRight;
1190 SetDefaultColorTransitionValues(slider);
1196 [MenuItem(
"GameObject/UI/Extensions/Primitives/UI Line Renderer",
false)]
1197 static public void AddUILineRenderer(MenuCommand menuCommand)
1199 GameObject go = CreateUIElementRoot(
"UI LineRenderer", menuCommand, s_ImageGUIElementSize);
1201 Selection.activeGameObject = go;
1204 [MenuItem(
"GameObject/UI/Extensions/Primitives/UI Line Texture Renderer",
false)]
1205 static public void AddUILineTextureRenderer(MenuCommand menuCommand)
1207 GameObject go = CreateUIElementRoot(
"UI LineTextureRenderer", menuCommand, s_ImageGUIElementSize);
1209 Selection.activeGameObject = go;
1212 [MenuItem(
"GameObject/UI/Extensions/Primitives/UI Circle",
false)]
1213 static public void AddUICircle(MenuCommand menuCommand)
1215 GameObject go = CreateUIElementRoot(
"UI Circle", menuCommand, s_ImageGUIElementSize);
1217 Selection.activeGameObject = go;
1220 [MenuItem(
"GameObject/UI/Extensions/Primitives/UI Diamond Graph",
false)]
1221 static public void AddDiamondGraph(MenuCommand menuCommand)
1223 GameObject go = CreateUIElementRoot(
"UI Diamond Graph", menuCommand, s_ImageGUIElementSize);
1225 Selection.activeGameObject = go;
1228 [MenuItem(
"GameObject/UI/Extensions/Primitives/UI Cut Corners",
false)]
1229 static public void AddCutCorners(MenuCommand menuCommand)
1231 GameObject go = CreateUIElementRoot(
"UI Cut Corners", menuCommand, s_ImageGUIElementSize);
1233 Selection.activeGameObject = go;
1236 [MenuItem(
"GameObject/UI/Extensions/Primitives/UI Polygon",
false)]
1237 static public void AddPolygon(MenuCommand menuCommand)
1239 GameObject go = CreateUIElementRoot(
"UI Polygon", menuCommand, s_ImageGUIElementSize);
1241 Selection.activeGameObject = go;
1244 [MenuItem(
"GameObject/UI/Extensions/Primitives/UI Grid Renderer",
false)]
1245 static public void AddUIGridRenderer(MenuCommand menuCommand)
1247 GameObject go = CreateUIElementRoot(
"UI GridRenderer", menuCommand, s_ImageGUIElementSize);
1249 Selection.activeGameObject = go;
1254 #region Re-Orderable Lists
1256 [MenuItem(
"GameObject/UI/Extensions/Re-orderable Lists/Re-orderable Vertical Scroll Rect",
false)]
1257 static public void AddReorderableScrollRectVertical(MenuCommand menuCommand)
1259 GameObject reorderableScrollRoot = CreateUIElementRoot(
"Re-orderable Vertical ScrollRect", menuCommand, s_ThickGUIElementSize);
1261 GameObject childContent = CreateUIObject(
"List_Content", reorderableScrollRoot);
1263 GameObject Element01 = CreateUIObject(
"Element_01", childContent);
1264 GameObject Element02 = CreateUIObject(
"Element_02", childContent);
1265 GameObject Element03 = CreateUIObject(
"Element_03", childContent);
1269 RectTransform rectTransformScrollSnapRoot = reorderableScrollRoot.GetComponent<RectTransform>();
1270 rectTransformScrollSnapRoot.anchorMin =
new Vector2(0.5f, 0.5f);
1271 rectTransformScrollSnapRoot.anchorMax =
new Vector2(0.5f, 0.5f);
1272 rectTransformScrollSnapRoot.anchoredPosition = Vector2.zero;
1273 rectTransformScrollSnapRoot.sizeDelta =
new Vector2(150f, 150f);
1276 Image image = reorderableScrollRoot.AddComponent<
Image>();
1277 image.color =
new Color(1f, 1f, 1f, 0.392f);
1279 ScrollRect sr = reorderableScrollRoot.AddComponent<ScrollRect>();
1281 sr.horizontal =
false;
1283 LayoutElement reorderableScrollRootLE = reorderableScrollRoot.AddComponent<LayoutElement>();
1284 reorderableScrollRootLE.preferredHeight = 300;
1286 reorderableScrollRoot.AddComponent<Mask>();
1290 RectTransform rectTransformContent = childContent.GetComponent<RectTransform>();
1291 rectTransformContent.anchorMin = Vector2.zero;
1292 rectTransformContent.anchorMax =
new Vector2(1f, 1f);
1293 rectTransformContent.sizeDelta = Vector2.zero;
1294 VerticalLayoutGroup childContentVLG = childContent.AddComponent<VerticalLayoutGroup>();
1295 ContentSizeFitter childContentCSF = childContent.AddComponent<ContentSizeFitter>();
1296 childContentCSF.verticalFit = ContentSizeFitter.FitMode.PreferredSize;
1298 sr.content = rectTransformContent;
1299 reorderableScrollRootRL.ContentLayout = childContentVLG;
1302 Image Element01Image = Element01.AddComponent<
Image>();
1303 Element01Image.color =
Color.green;
1305 RectTransform rectTransformElement01 = Element01.GetComponent<RectTransform>();
1306 rectTransformElement01.anchorMin =
new Vector2(0f, 0.5f);
1307 rectTransformElement01.anchorMax =
new Vector2(0f, 0.5f);
1308 rectTransformElement01.pivot =
new Vector2(0.5f, 0.5f);
1310 LayoutElement LEElement01 = Element01.AddComponent<LayoutElement>();
1311 LEElement01.minHeight = 50;
1314 Image Element02Image = Element02.AddComponent<
Image>();
1315 Element02Image.color =
Color.red;
1317 RectTransform rectTransformElement02 = Element02.GetComponent<RectTransform>();
1318 rectTransformElement02.anchorMin =
new Vector2(0f, 0.5f);
1319 rectTransformElement02.anchorMax =
new Vector2(0f, 0.5f);
1320 rectTransformElement02.pivot =
new Vector2(0.5f, 0.5f);
1322 LayoutElement LEElement02 = Element02.AddComponent<LayoutElement>();
1323 LEElement02.minHeight = 50;
1326 Image Element03Image = Element03.AddComponent<
Image>();
1327 Element03Image.color =
Color.blue;
1329 RectTransform rectTransformElement03 = Element03.GetComponent<RectTransform>();
1330 rectTransformElement03.anchorMin =
new Vector2(0f, 0.5f);
1331 rectTransformElement03.anchorMax =
new Vector2(0f, 0.5f);
1332 rectTransformElement03.pivot =
new Vector2(0.5f, 0.5f);
1334 LayoutElement LEElement03 = Element03.AddComponent<LayoutElement>();
1335 LEElement03.minHeight = 50;
1339 Selection.activeGameObject = reorderableScrollRoot;
1342 [MenuItem(
"GameObject/UI/Extensions/Re-orderable Lists/Re-orderable Horizontal Scroll Rect",
false)]
1343 static public void AddReorderableScrollRectHorizontal(MenuCommand menuCommand)
1345 GameObject reorderableScrollRoot = CreateUIElementRoot(
"Re-orderable Horizontal ScrollRect", menuCommand, s_ThickGUIElementSize);
1347 GameObject childContent = CreateUIObject(
"List_Content", reorderableScrollRoot);
1349 GameObject Element01 = CreateUIObject(
"Element_01", childContent);
1350 GameObject Element02 = CreateUIObject(
"Element_02", childContent);
1351 GameObject Element03 = CreateUIObject(
"Element_03", childContent);
1355 RectTransform rectTransformScrollSnapRoot = reorderableScrollRoot.GetComponent<RectTransform>();
1356 rectTransformScrollSnapRoot.anchorMin =
new Vector2(0.5f, 0.5f);
1357 rectTransformScrollSnapRoot.anchorMax =
new Vector2(0.5f, 0.5f);
1358 rectTransformScrollSnapRoot.anchoredPosition = Vector2.zero;
1359 rectTransformScrollSnapRoot.sizeDelta =
new Vector2(150f, 150f);
1362 Image image = reorderableScrollRoot.AddComponent<
Image>();
1363 image.color =
new Color(1f, 1f, 1f, 0.392f);
1365 ScrollRect sr = reorderableScrollRoot.AddComponent<ScrollRect>();
1366 sr.vertical =
false;
1367 sr.horizontal =
true;
1369 LayoutElement reorderableScrollRootLE = reorderableScrollRoot.AddComponent<LayoutElement>();
1370 reorderableScrollRootLE.preferredHeight = 300;
1372 reorderableScrollRoot.AddComponent<Mask>();
1376 RectTransform rectTransformContent = childContent.GetComponent<RectTransform>();
1377 rectTransformContent.anchorMin = Vector2.zero;
1378 rectTransformContent.anchorMax =
new Vector2(1f, 1f);
1379 rectTransformContent.sizeDelta = Vector2.zero;
1380 HorizontalLayoutGroup childContentHLG = childContent.AddComponent<HorizontalLayoutGroup>();
1381 ContentSizeFitter childContentCSF = childContent.AddComponent<ContentSizeFitter>();
1382 childContentCSF.horizontalFit = ContentSizeFitter.FitMode.PreferredSize;
1384 sr.content = rectTransformContent;
1385 reorderableScrollRootRL.ContentLayout = childContentHLG;
1388 Image Element01Image = Element01.AddComponent<
Image>();
1389 Element01Image.color =
Color.green;
1391 RectTransform rectTransformElement01 = Element01.GetComponent<RectTransform>();
1392 rectTransformElement01.anchorMin =
new Vector2(0f, 0.5f);
1393 rectTransformElement01.anchorMax =
new Vector2(0f, 0.5f);
1394 rectTransformElement01.pivot =
new Vector2(0.5f, 0.5f);
1396 LayoutElement LEElement01 = Element01.AddComponent<LayoutElement>();
1397 LEElement01.minWidth = 50;
1400 Image Element02Image = Element02.AddComponent<
Image>();
1401 Element02Image.color =
Color.red;
1403 RectTransform rectTransformElement02 = Element02.GetComponent<RectTransform>();
1404 rectTransformElement02.anchorMin =
new Vector2(0f, 0.5f);
1405 rectTransformElement02.anchorMax =
new Vector2(0f, 0.5f);
1406 rectTransformElement02.pivot =
new Vector2(0.5f, 0.5f);
1408 LayoutElement LEElement02 = Element02.AddComponent<LayoutElement>();
1409 LEElement02.minWidth = 50;
1412 Image Element03Image = Element03.AddComponent<
Image>();
1413 Element03Image.color =
Color.blue;
1415 RectTransform rectTransformElement03 = Element03.GetComponent<RectTransform>();
1416 rectTransformElement03.anchorMin =
new Vector2(0f, 0.5f);
1417 rectTransformElement03.anchorMax =
new Vector2(0f, 0.5f);
1418 rectTransformElement03.pivot =
new Vector2(0.5f, 0.5f);
1420 LayoutElement LEElement03 = Element03.AddComponent<LayoutElement>();
1421 LEElement03.minWidth = 50;
1425 Selection.activeGameObject = reorderableScrollRoot;
1428 [MenuItem(
"GameObject/UI/Extensions/Re-orderable Lists/Re-orderable Grid Scroll Rect",
false)]
1429 static public void AddReorderableScrollRectGrid(MenuCommand menuCommand)
1431 GameObject reorderableScrollRoot = CreateUIElementRoot(
"Re-orderable Grid ScrollRect", menuCommand, s_ThickGUIElementSize);
1433 GameObject childContent = CreateUIObject(
"List_Content", reorderableScrollRoot);
1435 GameObject Element01 = CreateUIObject(
"Element_01", childContent);
1436 GameObject Element02 = CreateUIObject(
"Element_02", childContent);
1437 GameObject Element03 = CreateUIObject(
"Element_03", childContent);
1441 RectTransform rectTransformScrollSnapRoot = reorderableScrollRoot.GetComponent<RectTransform>();
1442 rectTransformScrollSnapRoot.anchorMin =
new Vector2(0.5f, 0.5f);
1443 rectTransformScrollSnapRoot.anchorMax =
new Vector2(0.5f, 0.5f);
1444 rectTransformScrollSnapRoot.anchoredPosition = Vector2.zero;
1445 rectTransformScrollSnapRoot.sizeDelta =
new Vector2(150f, 150f);
1448 Image image = reorderableScrollRoot.AddComponent<
Image>();
1449 image.color =
new Color(1f, 1f, 1f, 0.392f);
1451 ScrollRect sr = reorderableScrollRoot.AddComponent<ScrollRect>();
1453 sr.horizontal =
false;
1455 LayoutElement reorderableScrollRootLE = reorderableScrollRoot.AddComponent<LayoutElement>();
1456 reorderableScrollRootLE.preferredHeight = 300;
1458 reorderableScrollRoot.AddComponent<Mask>();
1462 RectTransform rectTransformContent = childContent.GetComponent<RectTransform>();
1463 rectTransformContent.anchorMin = Vector2.zero;
1464 rectTransformContent.anchorMax =
new Vector2(1f, 1f);
1465 rectTransformContent.sizeDelta = Vector2.zero;
1466 GridLayoutGroup childContentGLG = childContent.AddComponent<GridLayoutGroup>();
1467 childContentGLG.cellSize =
new Vector2(30, 30);
1468 childContentGLG.spacing =
new Vector2(10, 10);
1469 ContentSizeFitter childContentCSF = childContent.AddComponent<ContentSizeFitter>();
1470 childContentCSF.verticalFit = ContentSizeFitter.FitMode.PreferredSize;
1472 sr.content = rectTransformContent;
1473 reorderableScrollRootRL.ContentLayout = childContentGLG;
1476 Image Element01Image = Element01.AddComponent<
Image>();
1477 Element01Image.color =
Color.green;
1479 RectTransform rectTransformElement01 = Element01.GetComponent<RectTransform>();
1480 rectTransformElement01.anchorMin =
new Vector2(0f, 0.5f);
1481 rectTransformElement01.anchorMax =
new Vector2(0f, 0.5f);
1482 rectTransformElement01.pivot =
new Vector2(0.5f, 0.5f);
1484 LayoutElement LEElement01 = Element01.AddComponent<LayoutElement>();
1485 LEElement01.minHeight = 50;
1488 Image Element02Image = Element02.AddComponent<
Image>();
1489 Element02Image.color =
Color.red;
1491 RectTransform rectTransformElement02 = Element02.GetComponent<RectTransform>();
1492 rectTransformElement02.anchorMin =
new Vector2(0f, 0.5f);
1493 rectTransformElement02.anchorMax =
new Vector2(0f, 0.5f);
1494 rectTransformElement02.pivot =
new Vector2(0.5f, 0.5f);
1496 LayoutElement LEElement02 = Element02.AddComponent<LayoutElement>();
1497 LEElement02.minHeight = 50;
1500 Image Element03Image = Element03.AddComponent<
Image>();
1501 Element03Image.color =
Color.blue;
1503 RectTransform rectTransformElement03 = Element03.GetComponent<RectTransform>();
1504 rectTransformElement03.anchorMin =
new Vector2(0f, 0.5f);
1505 rectTransformElement03.anchorMax =
new Vector2(0f, 0.5f);
1506 rectTransformElement03.pivot =
new Vector2(0.5f, 0.5f);
1508 LayoutElement LEElement03 = Element03.AddComponent<LayoutElement>();
1509 LEElement03.minHeight = 50;
1513 Selection.activeGameObject = reorderableScrollRoot;
1516 [MenuItem(
"GameObject/UI/Extensions/Re-orderable Lists/Re-orderable Vertical List",
false)]
1517 static public void AddReorderableVerticalList(MenuCommand menuCommand)
1519 GameObject reorderableScrollRoot = CreateUIElementRoot(
"Re-orderable Vertical List", menuCommand, s_ThickGUIElementSize);
1521 GameObject childContent = CreateUIObject(
"List_Content", reorderableScrollRoot);
1523 GameObject Element01 = CreateUIObject(
"Element_01", childContent);
1524 GameObject Element02 = CreateUIObject(
"Element_02", childContent);
1525 GameObject Element03 = CreateUIObject(
"Element_03", childContent);
1529 RectTransform rectTransformScrollSnapRoot = reorderableScrollRoot.GetComponent<RectTransform>();
1530 rectTransformScrollSnapRoot.anchorMin =
new Vector2(0.5f, 0.5f);
1531 rectTransformScrollSnapRoot.anchorMax =
new Vector2(0.5f, 0.5f);
1532 rectTransformScrollSnapRoot.anchoredPosition = Vector2.zero;
1533 rectTransformScrollSnapRoot.sizeDelta =
new Vector2(150f, 150f);
1535 Image image = reorderableScrollRoot.AddComponent<
Image>();
1536 image.color =
new Color(1f, 1f, 1f, 0.392f);
1538 LayoutElement reorderableScrollRootLE = reorderableScrollRoot.AddComponent<LayoutElement>();
1539 reorderableScrollRootLE.preferredHeight = 300;
1541 reorderableScrollRoot.AddComponent<Mask>();
1545 RectTransform rectTransformContent = childContent.GetComponent<RectTransform>();
1546 rectTransformContent.anchorMin = Vector2.zero;
1547 rectTransformContent.anchorMax =
new Vector2(1f, 1f);
1548 rectTransformContent.sizeDelta = Vector2.zero;
1549 VerticalLayoutGroup childContentVLG = childContent.AddComponent<VerticalLayoutGroup>();
1550 ContentSizeFitter childContentCSF = childContent.AddComponent<ContentSizeFitter>();
1551 childContentCSF.verticalFit = ContentSizeFitter.FitMode.PreferredSize;
1553 reorderableScrollRootRL.ContentLayout = childContentVLG;
1556 Image Element01Image = Element01.AddComponent<
Image>();
1557 Element01Image.color =
Color.green;
1559 RectTransform rectTransformElement01 = Element01.GetComponent<RectTransform>();
1560 rectTransformElement01.anchorMin =
new Vector2(0f, 0.5f);
1561 rectTransformElement01.anchorMax =
new Vector2(0f, 0.5f);
1562 rectTransformElement01.pivot =
new Vector2(0.5f, 0.5f);
1564 LayoutElement LEElement01 = Element01.AddComponent<LayoutElement>();
1565 LEElement01.minHeight = 50;
1568 Image Element02Image = Element02.AddComponent<
Image>();
1569 Element02Image.color =
Color.red;
1571 RectTransform rectTransformElement02 = Element02.GetComponent<RectTransform>();
1572 rectTransformElement02.anchorMin =
new Vector2(0f, 0.5f);
1573 rectTransformElement02.anchorMax =
new Vector2(0f, 0.5f);
1574 rectTransformElement02.pivot =
new Vector2(0.5f, 0.5f);
1576 LayoutElement LEElement02 = Element02.AddComponent<LayoutElement>();
1577 LEElement02.minHeight = 50;
1580 Image Element03Image = Element03.AddComponent<
Image>();
1581 Element03Image.color =
Color.blue;
1583 RectTransform rectTransformElement03 = Element03.GetComponent<RectTransform>();
1584 rectTransformElement03.anchorMin =
new Vector2(0f, 0.5f);
1585 rectTransformElement03.anchorMax =
new Vector2(0f, 0.5f);
1586 rectTransformElement03.pivot =
new Vector2(0.5f, 0.5f);
1588 LayoutElement LEElement03 = Element03.AddComponent<LayoutElement>();
1589 LEElement03.minHeight = 50;
1593 Selection.activeGameObject = reorderableScrollRoot;
1596 [MenuItem(
"GameObject/UI/Extensions/Re-orderable Lists/Re-orderable Horizontal List",
false)]
1597 static public void AddReorderableHorizontalList(MenuCommand menuCommand)
1599 GameObject reorderableScrollRoot = CreateUIElementRoot(
"Re-orderable Horizontal List", menuCommand, s_ThickGUIElementSize);
1601 GameObject childContent = CreateUIObject(
"List_Content", reorderableScrollRoot);
1603 GameObject Element01 = CreateUIObject(
"Element_01", childContent);
1604 GameObject Element02 = CreateUIObject(
"Element_02", childContent);
1605 GameObject Element03 = CreateUIObject(
"Element_03", childContent);
1609 RectTransform rectTransformScrollSnapRoot = reorderableScrollRoot.GetComponent<RectTransform>();
1610 rectTransformScrollSnapRoot.anchorMin =
new Vector2(0.5f, 0.5f);
1611 rectTransformScrollSnapRoot.anchorMax =
new Vector2(0.5f, 0.5f);
1612 rectTransformScrollSnapRoot.anchoredPosition = Vector2.zero;
1613 rectTransformScrollSnapRoot.sizeDelta =
new Vector2(150f, 150f);
1616 Image image = reorderableScrollRoot.AddComponent<
Image>();
1617 image.color =
new Color(1f, 1f, 1f, 0.392f);
1619 LayoutElement reorderableScrollRootLE = reorderableScrollRoot.AddComponent<LayoutElement>();
1620 reorderableScrollRootLE.preferredHeight = 300;
1622 reorderableScrollRoot.AddComponent<Mask>();
1626 RectTransform rectTransformContent = childContent.GetComponent<RectTransform>();
1627 rectTransformContent.anchorMin = Vector2.zero;
1628 rectTransformContent.anchorMax =
new Vector2(1f, 1f);
1629 rectTransformContent.sizeDelta = Vector2.zero;
1630 HorizontalLayoutGroup childContentHLG = childContent.AddComponent<HorizontalLayoutGroup>();
1631 ContentSizeFitter childContentCSF = childContent.AddComponent<ContentSizeFitter>();
1632 childContentCSF.horizontalFit = ContentSizeFitter.FitMode.PreferredSize;
1634 reorderableScrollRootRL.ContentLayout = childContentHLG;
1637 Image Element01Image = Element01.AddComponent<
Image>();
1638 Element01Image.color =
Color.green;
1640 RectTransform rectTransformElement01 = Element01.GetComponent<RectTransform>();
1641 rectTransformElement01.anchorMin =
new Vector2(0f, 0.5f);
1642 rectTransformElement01.anchorMax =
new Vector2(0f, 0.5f);
1643 rectTransformElement01.pivot =
new Vector2(0.5f, 0.5f);
1645 LayoutElement LEElement01 = Element01.AddComponent<LayoutElement>();
1646 LEElement01.minWidth = 50;
1649 Image Element02Image = Element02.AddComponent<
Image>();
1650 Element02Image.color =
Color.red;
1652 RectTransform rectTransformElement02 = Element02.GetComponent<RectTransform>();
1653 rectTransformElement02.anchorMin =
new Vector2(0f, 0.5f);
1654 rectTransformElement02.anchorMax =
new Vector2(0f, 0.5f);
1655 rectTransformElement02.pivot =
new Vector2(0.5f, 0.5f);
1657 LayoutElement LEElement02 = Element02.AddComponent<LayoutElement>();
1658 LEElement02.minWidth = 50;
1661 Image Element03Image = Element03.AddComponent<
Image>();
1662 Element03Image.color =
Color.blue;
1664 RectTransform rectTransformElement03 = Element03.GetComponent<RectTransform>();
1665 rectTransformElement03.anchorMin =
new Vector2(0f, 0.5f);
1666 rectTransformElement03.anchorMax =
new Vector2(0f, 0.5f);
1667 rectTransformElement03.pivot =
new Vector2(0.5f, 0.5f);
1669 LayoutElement LEElement03 = Element03.AddComponent<LayoutElement>();
1670 LEElement03.minWidth = 50;
1674 Selection.activeGameObject = reorderableScrollRoot;
1677 [MenuItem(
"GameObject/UI/Extensions/Re-orderable Lists/Re-orderable Grid",
false)]
1678 static public void AddReorderableGrid(MenuCommand menuCommand)
1680 GameObject reorderableScrollRoot = CreateUIElementRoot(
"Re-orderable Grid", menuCommand, s_ThickGUIElementSize);
1682 GameObject childContent = CreateUIObject(
"List_Content", reorderableScrollRoot);
1684 GameObject Element01 = CreateUIObject(
"Element_01", childContent);
1685 GameObject Element02 = CreateUIObject(
"Element_02", childContent);
1686 GameObject Element03 = CreateUIObject(
"Element_03", childContent);
1690 RectTransform rectTransformScrollSnapRoot = reorderableScrollRoot.GetComponent<RectTransform>();
1691 rectTransformScrollSnapRoot.anchorMin =
new Vector2(0.5f, 0.5f);
1692 rectTransformScrollSnapRoot.anchorMax =
new Vector2(0.5f, 0.5f);
1693 rectTransformScrollSnapRoot.anchoredPosition = Vector2.zero;
1694 rectTransformScrollSnapRoot.sizeDelta =
new Vector2(150f, 150f);
1697 Image image = reorderableScrollRoot.AddComponent<
Image>();
1698 image.color =
new Color(1f, 1f, 1f, 0.392f);
1700 LayoutElement reorderableScrollRootLE = reorderableScrollRoot.AddComponent<LayoutElement>();
1701 reorderableScrollRootLE.preferredHeight = 300;
1703 reorderableScrollRoot.AddComponent<Mask>();
1707 RectTransform rectTransformContent = childContent.GetComponent<RectTransform>();
1708 rectTransformContent.anchorMin = Vector2.zero;
1709 rectTransformContent.anchorMax =
new Vector2(1f, 1f);
1710 rectTransformContent.sizeDelta = Vector2.zero;
1711 GridLayoutGroup childContentGLG = childContent.AddComponent<GridLayoutGroup>();
1712 childContentGLG.cellSize =
new Vector2(30, 30);
1713 childContentGLG.spacing =
new Vector2(10, 10);
1714 ContentSizeFitter childContentCSF = childContent.AddComponent<ContentSizeFitter>();
1715 childContentCSF.verticalFit = ContentSizeFitter.FitMode.PreferredSize;
1717 reorderableScrollRootRL.ContentLayout = childContentGLG;
1720 Image Element01Image = Element01.AddComponent<
Image>();
1721 Element01Image.color =
Color.green;
1723 RectTransform rectTransformElement01 = Element01.GetComponent<RectTransform>();
1724 rectTransformElement01.anchorMin =
new Vector2(0f, 0.5f);
1725 rectTransformElement01.anchorMax =
new Vector2(0f, 0.5f);
1726 rectTransformElement01.pivot =
new Vector2(0.5f, 0.5f);
1728 LayoutElement LEElement01 = Element01.AddComponent<LayoutElement>();
1729 LEElement01.minHeight = 50;
1732 Image Element02Image = Element02.AddComponent<
Image>();
1733 Element02Image.color =
Color.red;
1735 RectTransform rectTransformElement02 = Element02.GetComponent<RectTransform>();
1736 rectTransformElement02.anchorMin =
new Vector2(0f, 0.5f);
1737 rectTransformElement02.anchorMax =
new Vector2(0f, 0.5f);
1738 rectTransformElement02.pivot =
new Vector2(0.5f, 0.5f);
1740 LayoutElement LEElement02 = Element02.AddComponent<LayoutElement>();
1741 LEElement02.minHeight = 50;
1744 Image Element03Image = Element03.AddComponent<
Image>();
1745 Element03Image.color =
Color.blue;
1747 RectTransform rectTransformElement03 = Element03.GetComponent<RectTransform>();
1748 rectTransformElement03.anchorMin =
new Vector2(0f, 0.5f);
1749 rectTransformElement03.anchorMax =
new Vector2(0f, 0.5f);
1750 rectTransformElement03.pivot =
new Vector2(0.5f, 0.5f);
1752 LayoutElement LEElement03 = Element03.AddComponent<LayoutElement>();
1753 LEElement03.minHeight = 50;
1757 Selection.activeGameObject = reorderableScrollRoot;
1763 #region Segmented Control
1764 [MenuItem(
"GameObject/UI/Extensions/Segmented Control",
false)]
1765 static public void AddSegmentedControl(MenuCommand menuCommand)
1767 GameObject go = CreateUIElementRoot(
"Segmented Control", menuCommand, s_ThickGUIElementSize);
1770 Color selectedColor =
new Color(0f, 0.455f, 0.894f);
1772 var labels =
new string[] {
"This",
"That",
"Other" };
1773 for (
int i = 0; i < 3; i++)
1775 var button = AddButtonAsChild(go).GetComponent<
Button>();
1776 button.gameObject.AddComponent<
Segment>();
1777 button.name =
"Segment " + (i + 1);
1779 var colors = button.colors;
1780 colors.pressedColor = selectedColor;
1781 button.colors = colors;
1783 var text = button.GetComponentInChildren<Text>();
1784 text.text = labels[i];
1785 text.color = selectedColor;
1790 Selection.activeGameObject = go;
1795 [MenuItem(
"GameObject/UI/Extensions/Stepper",
false)]
1796 static public void AddStepper(MenuCommand menuCommand)
1798 GameObject go = CreateUIElementRoot(
"Stepper", menuCommand,
new Vector2(kWidth / 2, kThickHeight));
1801 var labels =
new string[] {
"−",
"+" };
1802 for (
int i = 0; i < 2; i++)
1804 var button = AddButtonAsChild(go);
1806 button.name = i == 0 ?
"Minus" :
"Plus";
1807 var text = button.GetComponentInChildren<Text>();
1808 text.text = labels[i];
1813 Selection.activeGameObject = go;
1818 [MenuItem(
"GameObject/UI/Extensions/UI Knob",
false)]
1819 static public void AddUIKnob(MenuCommand menuCommand)
1821 GameObject go = CreateUIElementRoot(
"UI Knob", menuCommand, s_ImageGUIElementSize);
1822 go.AddComponent<
Image>();
1824 Selection.activeGameObject = go;
1829 [MenuItem(
"GameObject/UI/Extensions/TextPic",
false)]
1830 static public void AddTextPic(MenuCommand menuCommand)
1832 GameObject go = CreateUIElementRoot(
"TextPic", menuCommand, s_ImageGUIElementSize);
1834 Selection.activeGameObject = go;
1839 [MenuItem(
"GameObject/UI/Extensions/Box Slider",
false)]
1840 static public void AddBoxSlider(MenuCommand menuCommand)
1843 GameObject uiboxSliderRoot = CreateUIElementRoot(
"Box Slider", menuCommand, s_ImageGUIElementSize);
1845 GameObject handleSlideArea = CreateUIObject(
"Handle Slide Area", uiboxSliderRoot);
1847 GameObject handle = CreateUIObject(
"Handle", handleSlideArea);
1850 SetAnchorsAndStretch(uiboxSliderRoot);
1851 Image backgroundImage = uiboxSliderRoot.AddComponent<
Image>();
1852 backgroundImage.sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kBackgroundSpriteResourcePath);
1853 backgroundImage.type =
Image.Type.Sliced;
1854 backgroundImage.fillCenter =
false;
1855 backgroundImage.color =
new Color(1f, 1f, 1f, 0.392f);
1857 RectTransform handleRect = SetAnchorsAndStretch(handle);
1858 handleRect.sizeDelta =
new Vector2(25, 25);
1859 Image handleImage = handle.AddComponent<
Image>();
1860 handleImage.sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kKnobPath);
1861 handleImage.type =
Image.Type.Simple;
1862 handleImage.fillCenter =
false;
1863 handleImage.color =
new Color(1f, 1f, 1f, 0.392f);
1867 selectableArea.HandleRect = handle.GetComponent<RectTransform>();
1868 selectableArea.ValueX = selectableArea.ValueY = 0.5f;
1870 Selection.activeGameObject = uiboxSliderRoot;
1874 #region Non Drawing Graphic options
1875 [MenuItem(
"GameObject/UI/Extensions/NonDrawingGraphic",
false)]
1876 static public void AddNonDrawingGraphic(MenuCommand menuCommand)
1878 GameObject go = CreateUIElementRoot(
"NonDrawing Graphic", menuCommand, s_ImageGUIElementSize);
1880 Selection.activeGameObject = go;
1883 [MenuItem(
"GameObject/UI/Extensions/NonDrawingGraphicClickable",
false)]
1884 static public void AddClickableNonDrawingGraphic(MenuCommand menuCommand)
1886 GameObject go = CreateUIElementRoot(
"NonDrawing Graphic-Clickable", menuCommand, s_ImageGUIElementSize);
1889 Selection.activeGameObject = go;
1893 #region Radial Slider
1894 [MenuItem(
"GameObject/UI/Extensions/Radial Slider",
false)]
1895 static public void AddRadialSlider(MenuCommand menuCommand)
1897 GameObject sliderRoot = CreateUIElementRoot(
"Radial Slider", menuCommand, s_ThickGUIElementSize);
1898 GameObject SliderControl = CreateUIObject(
"Slider", sliderRoot);
1900 Image image = sliderRoot.AddComponent<
Image>();
1901 image.sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kStandardSpritePath);
1902 image.type =
Image.Type.Simple;
1903 image.color = s_DefaultSelectableColor;
1905 RectTransform sliderRootRectTransform = sliderRoot.GetComponent<RectTransform>();
1906 sliderRootRectTransform.anchorMin =
new Vector2(0.5f, 0.5f);
1907 sliderRootRectTransform.anchorMax =
new Vector2(0.5f, 0.5f);
1908 sliderRootRectTransform.anchoredPosition = Vector2.zero;
1909 sliderRootRectTransform.sizeDelta =
new Vector2(250f, 250f);
1911 Image slidrImage = SliderControl.AddComponent<
Image>();
1912 slidrImage.sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kStandardSpritePath);
1913 slidrImage.type =
Image.Type.Filled;
1914 slidrImage.fillMethod =
Image.FillMethod.Radial360;
1915 slidrImage.fillOrigin = 3;
1916 slidrImage.color =
Color.red;
1917 slidrImage.fillAmount = 0;
1922 RectTransform sliderRectTransform = SliderControl.GetComponent<RectTransform>();
1923 sliderRectTransform.anchorMin = Vector2.zero;
1924 sliderRectTransform.anchorMax = Vector2.one;
1925 sliderRectTransform.sizeDelta = Vector2.zero;
1927 Selection.activeGameObject = sliderRoot;
1932 [MenuItem(
"GameObject/UI/Extensions/Range Slider",
false)]
1933 static public void AddRangeSlider(MenuCommand menuCommand)
1935 GameObject rangeSliderRoot = CreateUIElementRoot(
"Range Slider", menuCommand,
new Vector2(160, 20));
1937 GameObject background = CreateUIObject(
"Background", rangeSliderRoot);
1939 GameObject fillArea = CreateUIObject(
"Fill Area", rangeSliderRoot);
1940 GameObject fill = CreateUIObject(
"Fill", fillArea);
1942 GameObject handleSlideArea = CreateUIObject(
"Handle Slide Area", rangeSliderRoot);
1943 GameObject lowHandle = CreateUIObject(
"Low Handle", handleSlideArea);
1944 GameObject highHandle = CreateUIObject(
"High Handle", handleSlideArea);
1946 SetAnchorsAndStretch(rangeSliderRoot);
1947 Image backgroundImage = background.AddComponent<
Image>();
1948 backgroundImage.sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kBackgroundSpriteResourcePath);
1949 backgroundImage.type =
Image.Type.Sliced;
1950 backgroundImage.fillCenter =
false;
1952 RectTransform backgroundRect = backgroundImage.rectTransform;
1953 backgroundRect.anchorMin =
new Vector2(0, 0.25f);
1954 backgroundRect.anchorMax =
new Vector2(1, 0.75f);
1955 backgroundRect.sizeDelta = Vector2.zero;
1957 RectTransform fillAreaRect = SetAnchorsAndStretch(fillArea);
1958 fillAreaRect.anchorMin =
new Vector2(0, 0.25f);
1959 fillAreaRect.anchorMax =
new Vector2(1, 0.75f);
1960 fillAreaRect.offsetMin =
new Vector2(5, 0);
1961 fillAreaRect.offsetMax =
new Vector2(-5, 0);
1963 RectTransform fillRect = SetAnchorsAndStretch(fill);
1964 Image fillImage = fill.AddComponent<
Image>();
1965 fillImage.sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kStandardSpritePath);
1966 fillImage.type =
Image.Type.Sliced;
1967 fillImage.fillCenter =
true;
1968 fillRect.offsetMin =
new Vector2(-5, 0);
1969 fillRect.offsetMax =
new Vector2(5, 0);
1971 RectTransform handleSlideRect = SetAnchorsAndStretch(handleSlideArea);
1972 handleSlideRect.anchorMin =
new Vector2(0, 0.5f);
1973 handleSlideRect.anchorMax =
new Vector2(1, 0.5f);
1974 handleSlideRect.offsetMin =
new Vector2(10, -10);
1975 handleSlideRect.offsetMax =
new Vector2(-10, 10);
1977 RectTransform lowHandleRect = SetAnchorsAndStretch(lowHandle);
1978 Image lowHandleImage = lowHandle.AddComponent<
Image>();
1979 lowHandleImage.sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kKnobPath);
1980 lowHandleRect.sizeDelta =
new Vector2(20, 0);
1982 RectTransform highHandleRect = SetAnchorsAndStretch(highHandle);
1983 Image highHandleImage = highHandle.AddComponent<
Image>();
1984 highHandleImage.sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kKnobPath);
1985 highHandleRect.sizeDelta =
new Vector2(20, 0);
1993 rangeSlider.targetGraphic = fillImage;
1995 Selection.activeGameObject = rangeSliderRoot;
1999 #region Menu Manager GO
2000 [MenuItem(
"GameObject/UI/Extensions/Menu Manager",
false)]
2001 static public void AddMenuManager(MenuCommand menuCommand)
2003 GameObject child =
new GameObject(
"MenuManager");
2004 Undo.RegisterCreatedObjectUndo(child,
"Create " +
"MenuManager");
2006 Selection.activeGameObject = child;
2013 #region Helper Functions
2014 private static GameObject AddInputFieldAsChild(GameObject parent)
2016 GameObject root = CreateUIObject(
"InputField", parent);
2018 GameObject childPlaceholder = CreateUIObject(
"Placeholder", root);
2019 GameObject childText = CreateUIObject(
"Text", root);
2022 image.sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kInputFieldBackgroundPath);
2023 image.type =
Image.Type.Sliced;
2024 image.color = s_DefaultSelectableColor;
2026 InputField inputField = root.AddComponent<InputField>();
2027 SetDefaultColorTransitionValues(inputField);
2029 Text text = childText.AddComponent<Text>();
2031 text.supportRichText =
false;
2032 SetDefaultTextValues(text);
2034 Text placeholder = childPlaceholder.AddComponent<Text>();
2035 placeholder.text =
"Enter text...";
2036 placeholder.fontStyle = FontStyle.Italic;
2038 Color placeholderColor = text.color;
2039 placeholderColor.a *= 0.5f;
2040 placeholder.color = placeholderColor;
2042 RectTransform textRectTransform = childText.GetComponent<RectTransform>();
2043 textRectTransform.anchorMin = Vector2.zero;
2044 textRectTransform.anchorMax = Vector2.one;
2045 textRectTransform.sizeDelta = Vector2.zero;
2046 textRectTransform.offsetMin =
new Vector2(10, 6);
2047 textRectTransform.offsetMax =
new Vector2(-10, -7);
2049 RectTransform placeholderRectTransform = childPlaceholder.GetComponent<RectTransform>();
2050 placeholderRectTransform.anchorMin = Vector2.zero;
2051 placeholderRectTransform.anchorMax = Vector2.one;
2052 placeholderRectTransform.sizeDelta = Vector2.zero;
2053 placeholderRectTransform.offsetMin =
new Vector2(10, 6);
2054 placeholderRectTransform.offsetMax =
new Vector2(-10, -7);
2056 inputField.textComponent = text;
2057 inputField.placeholder = placeholder;
2062 private static GameObject AddScrollbarAsChild(GameObject parent)
2065 GameObject scrollbarRoot = CreateUIObject(
"Scrollbar", parent);
2067 GameObject sliderArea = CreateUIObject(
"Sliding Area", scrollbarRoot);
2068 GameObject handle = CreateUIObject(
"Handle", sliderArea);
2070 Image bgImage = scrollbarRoot.AddComponent<
Image>();
2071 bgImage.sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kBackgroundSpriteResourcePath);
2072 bgImage.type =
Image.Type.Sliced;
2073 bgImage.color = s_DefaultSelectableColor;
2075 Image handleImage = handle.AddComponent<
Image>();
2076 handleImage.sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kStandardSpritePath);
2077 handleImage.type =
Image.Type.Sliced;
2078 handleImage.color = s_DefaultSelectableColor;
2080 RectTransform sliderAreaRect = sliderArea.GetComponent<RectTransform>();
2081 sliderAreaRect.sizeDelta =
new Vector2(-20, -20);
2082 sliderAreaRect.anchorMin = Vector2.zero;
2083 sliderAreaRect.anchorMax = Vector2.one;
2085 RectTransform handleRect = handle.GetComponent<RectTransform>();
2086 handleRect.sizeDelta =
new Vector2(20, 20);
2088 Scrollbar scrollbar = scrollbarRoot.AddComponent<Scrollbar>();
2089 scrollbar.handleRect = handleRect;
2090 scrollbar.targetGraphic = handleImage;
2091 SetDefaultColorTransitionValues(scrollbar);
2093 return scrollbarRoot;
2096 private static GameObject AddTextAsChild(GameObject parent)
2098 GameObject go = CreateUIObject(
"Text", parent);
2100 Text lbl = go.AddComponent<Text>();
2101 lbl.text =
"New Text";
2102 SetDefaultTextValues(lbl);
2107 private static GameObject AddImageAsChild(GameObject parent)
2109 GameObject go = CreateUIObject(
"Image", parent);
2111 go.AddComponent<
Image>();
2116 private static GameObject AddButtonAsChild(GameObject parent)
2118 GameObject buttonRoot = CreateUIObject(
"Button", parent);
2120 GameObject childText =
new GameObject(
"Text");
2121 GameObjectUtility.SetParentAndAlign(childText, buttonRoot);
2123 Image image = buttonRoot.AddComponent<
Image>();
2124 image.sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kStandardSpritePath);
2125 image.type =
Image.Type.Sliced;
2126 image.color = s_DefaultSelectableColor;
2129 SetDefaultColorTransitionValues(bt);
2131 Text text = childText.AddComponent<Text>();
2132 text.text =
"Button";
2133 text.alignment = TextAnchor.MiddleCenter;
2134 SetDefaultTextValues(text);
2136 RectTransform textRectTransform = childText.GetComponent<RectTransform>();
2137 textRectTransform.anchorMin = Vector2.zero;
2138 textRectTransform.anchorMax = Vector2.one;
2139 textRectTransform.sizeDelta = Vector2.zero;
2144 private static RectTransform SetAnchorsAndStretch(GameObject root)
2146 RectTransform rectTransformRoot = root.GetComponent<RectTransform>();
2147 rectTransformRoot.anchorMin =
new Vector2(0.5f, 0.5f);
2148 rectTransformRoot.anchorMax =
new Vector2(0.5f, 0.5f);
2149 rectTransformRoot.anchoredPosition = Vector2.zero;
2150 return rectTransformRoot;
UnityEngine.UI.Button Button
System.Drawing.Image Image
Extension to the UI class which creates a dropdown list
RectTransform HighHandleRect
RectTransform LowHandleRect
RectTransform selectionMask
void LayoutSides(Selectable[] sides=null)
Includes a few fixes of my own, mainly to tidy up duplicates, remove unneeded stuff and testing....
Credit Erdener Gonenc - @PixelEnvision.