MenuItems.cs 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. namespace Shapes2D {
  2. using UnityEngine;
  3. using UnityEditor;
  4. using UnityEngine.UI;
  5. using UnityEngine.EventSystems;
  6. public class MenuItems {
  7. // thanks to flatuicolors.com
  8. static Color[] colors = {
  9. new Color(26 / 255f, 188 / 255f, 156 / 255f),
  10. new Color(46 / 255f, 204 / 255f, 113 / 255f),
  11. new Color(52 / 255f, 152 / 255f, 219 / 255f),
  12. new Color(155 / 255f, 89 / 255f, 182 / 255f),
  13. new Color(22 / 255f, 160 / 255f, 133 / 255f),
  14. new Color(39 / 255f, 174 / 255f, 96 / 255f),
  15. new Color(41 / 255f, 128 / 255f, 185 / 255f),
  16. new Color(142 / 255f, 68 / 255f, 173 / 255f),
  17. new Color(241 / 255f, 196 / 255f, 15 / 255f),
  18. new Color(230 / 255f, 126 / 255f, 34 / 255f),
  19. new Color(231 / 255f, 76 / 255f, 60 / 255f),
  20. new Color(149 / 255f, 165 / 255f, 166 / 255f),
  21. new Color(243 / 255f, 156 / 255f, 18 / 255f),
  22. new Color(211 / 255f, 84 / 255f, 0 / 255f),
  23. new Color(192 / 255f, 57 / 255f, 43 / 255f),
  24. new Color(127 / 255f, 140 / 255f, 141 / 255f)
  25. };
  26. public static bool AddToSelected(GameObject go) {
  27. if (Selection.activeTransform == null) {
  28. Selection.activeTransform = go.transform;
  29. return false;
  30. }
  31. go.transform.SetParent(Selection.activeTransform);
  32. go.transform.Translate(Selection.activeTransform.position);
  33. Selection.activeTransform = go.transform;
  34. return true;
  35. }
  36. public static void AddToSelectedNonCanvas(GameObject go) {
  37. if (Selection.activeGameObject == null) {
  38. Selection.activeTransform = go.transform;
  39. return;
  40. }
  41. if (Selection.activeGameObject.GetComponentInParent<Canvas>() == null) {
  42. AddToSelected(go);
  43. return;
  44. }
  45. Selection.activeTransform = go.transform;
  46. }
  47. public static bool AddToSelectedCanvas(GameObject go) {
  48. if (Selection.activeGameObject == null)
  49. return false;
  50. if (Selection.activeGameObject.GetComponentInParent<Canvas>() == null)
  51. return false;
  52. return AddToSelected(go);
  53. }
  54. public static GameObject CreatePrefab(string name, bool withUndo = true) {
  55. GameObject go = GameObject.Instantiate(
  56. Resources.Load<GameObject>("Shapes2D/Prefabs/" + name));
  57. go.name = name;
  58. go.GetComponent<Shape>().settings.fillColor = colors[Random.Range(0, colors.Length)];
  59. if (withUndo)
  60. Undo.RegisterCreatedObjectUndo(go, "Create Shapes2D " + name);
  61. return go;
  62. }
  63. private static Canvas CreateCanvas() {
  64. Canvas canvas = new GameObject().AddComponent<Canvas>();
  65. canvas.gameObject.AddComponent<GraphicRaycaster>();
  66. canvas.name = "Canvas";
  67. canvas.gameObject.layer = LayerMask.NameToLayer("UI");
  68. canvas.renderMode = RenderMode.ScreenSpaceOverlay;
  69. if (GameObject.FindObjectOfType<EventSystem>() == null) {
  70. GameObject es = new GameObject();
  71. es.name = "Event System";
  72. es.AddComponent<EventSystem>();
  73. es.AddComponent<StandaloneInputModule>();
  74. es.transform.SetParent(canvas.transform);
  75. }
  76. return canvas;
  77. }
  78. [MenuItem("GameObject/Shapes2D/Sprites/Arc", false, 10)]
  79. private static void CreateArc() {
  80. MenuItems.AddToSelectedNonCanvas(MenuItems.CreatePrefab("Arc"));
  81. }
  82. [MenuItem("GameObject/Shapes2D/Sprites/Curve", false, 10)]
  83. private static void CreateCurve() {
  84. MenuItems.AddToSelectedNonCanvas(MenuItems.CreatePrefab("Curve"));
  85. }
  86. [MenuItem("GameObject/Shapes2D/Sprites/Donut", false, 10)]
  87. private static void CreateDonut() {
  88. MenuItems.AddToSelectedNonCanvas(MenuItems.CreatePrefab("Donut"));
  89. }
  90. [MenuItem("GameObject/Shapes2D/Sprites/Ellipse", false, 10)]
  91. private static void CreateEllipse() {
  92. MenuItems.AddToSelectedNonCanvas(MenuItems.CreatePrefab("Ellipse"));
  93. }
  94. [MenuItem("GameObject/Shapes2D/Sprites/Filled Path", false, 10)]
  95. private static void CreateFilledPath() {
  96. MenuItems.AddToSelectedNonCanvas(MenuItems.CreatePrefab("Filled Path"));
  97. }
  98. [MenuItem("GameObject/Shapes2D/Sprites/Line Path", false, 10)]
  99. private static void CreateLinePath() {
  100. MenuItems.AddToSelectedNonCanvas(MenuItems.CreatePrefab("Line Path"));
  101. }
  102. [MenuItem("GameObject/Shapes2D/Sprites/Pie", false, 10)]
  103. private static void CreatePie() {
  104. MenuItems.AddToSelectedNonCanvas(MenuItems.CreatePrefab("Pie"));
  105. }
  106. [MenuItem("GameObject/Shapes2D/Sprites/Polygon", false, 10)]
  107. private static void CreatePolygon() {
  108. MenuItems.AddToSelectedNonCanvas(MenuItems.CreatePrefab("Polygon"));
  109. }
  110. [MenuItem("GameObject/Shapes2D/Sprites/Rectangle", false, 10)]
  111. private static void CreateRectangle() {
  112. MenuItems.AddToSelectedNonCanvas(MenuItems.CreatePrefab("Rectangle"));
  113. }
  114. [MenuItem("GameObject/Shapes2D/Sprites/Rounded Rectangle", false, 10)]
  115. private static void CreateRoundedRectangle() {
  116. MenuItems.AddToSelectedNonCanvas(MenuItems.CreatePrefab("Rounded Rectangle"));
  117. }
  118. [MenuItem("GameObject/Shapes2D/Sprites/Triangle", false, 10)]
  119. private static void CreateTriangle() {
  120. MenuItems.AddToSelectedNonCanvas(MenuItems.CreatePrefab("Triangle"));
  121. }
  122. [MenuItem("GameObject/Shapes2D/UI/Button", false, 10)]
  123. private static void CreateButton() {
  124. GameObject go = MenuItems.CreatePrefab("Button", false);
  125. go.name = "Shapes2D Button";
  126. if (MenuItems.AddToSelectedCanvas(go)) {
  127. Undo.RegisterCreatedObjectUndo(go, "Create Shapes2D Button");
  128. } else {
  129. bool createdCanvas = false;
  130. Canvas canvas = GameObject.FindObjectOfType<Canvas>();
  131. if (canvas == null || !canvas.enabled || canvas.transform.parent != null) {
  132. canvas = CreateCanvas();
  133. createdCanvas = true;
  134. }
  135. go.transform.SetParent(canvas.transform);
  136. Selection.activeTransform = go.transform;
  137. if (createdCanvas)
  138. Undo.RegisterCreatedObjectUndo(canvas.gameObject, "Create Shapes2D Button");
  139. else
  140. Undo.RegisterCreatedObjectUndo(go, "Create Shapes2D Button");
  141. }
  142. go.GetComponent<RectTransform>().anchoredPosition = Vector2.zero;
  143. go.transform.localScale = new Vector3(1, 1, 1);
  144. }
  145. [MenuItem("GameObject/Shapes2D/UI/Panel", false, 10)]
  146. private static void CreatePanel() {
  147. GameObject go = MenuItems.CreatePrefab("Panel", false);
  148. go.name = "Shapes2D Panel";
  149. if (MenuItems.AddToSelectedCanvas(go)) {
  150. Undo.RegisterCreatedObjectUndo(go, "Create Shapes2D Panel");
  151. } else {
  152. bool createdCanvas = false;
  153. Canvas canvas = GameObject.FindObjectOfType<Canvas>();
  154. if (canvas == null || !canvas.enabled || canvas.transform.parent != null) {
  155. canvas = CreateCanvas();
  156. createdCanvas = true;
  157. }
  158. go.transform.SetParent(canvas.transform);
  159. Selection.activeTransform = go.transform;
  160. if (createdCanvas)
  161. Undo.RegisterCreatedObjectUndo(canvas.gameObject, "Create Shapes2D Panel");
  162. else
  163. Undo.RegisterCreatedObjectUndo(go, "Create Shapes2D Panel");
  164. }
  165. RectTransform rt = go.GetComponent<RectTransform>();
  166. rt.offsetMin = new Vector2(0, 0);
  167. rt.offsetMax = new Vector2(0, 0);
  168. rt.transform.localScale = new Vector3(1, 1, 1);
  169. }
  170. }
  171. }