No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

MenuItems.cs 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. using UnityEngine;
  2. using UnityEngine.U2D;
  3. using UnityEditor;
  4. namespace UnityEditor.U2D
  5. {
  6. static internal class MenuItems
  7. {
  8. enum SpriteAssetMenuPriority : int
  9. {
  10. Triangle = 1,
  11. Square,
  12. Circle,
  13. Capsule,
  14. IsometricDiamond,
  15. HexagonFlatTop,
  16. HexagonPointTop,
  17. Sliced9
  18. }
  19. enum SpriteAtlasAssetMenuPriority : int
  20. {
  21. SpriteAtlas = SpriteAssetMenuPriority.Triangle + 11
  22. }
  23. enum SpriteGameObjectMenuPriority : int
  24. {
  25. Triangle = 1,
  26. Square,
  27. Circle,
  28. Capsule,
  29. IsometricDiamond,
  30. HexagonFlatTop,
  31. HexagonPointTop,
  32. Sliced9
  33. }
  34. enum PhysicsGameObjectMenuPriority : int
  35. {
  36. StaticSprite = 2,
  37. DynamicSprite
  38. }
  39. enum SpriteMaskGameObjectMenuPriority : int
  40. {
  41. SpriteMask = 6
  42. }
  43. [MenuItem("Assets/Create/2D/Sprites/Triangle", priority = (int)SpriteAssetMenuPriority.Triangle)]
  44. static void AssetsCreateSpritesTriangle(MenuCommand menuCommand)
  45. {
  46. ItemCreationUtility.CreateAssetObjectFromTemplate<Texture2D>("Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/Triangle.png");
  47. }
  48. [MenuItem("Assets/Create/2D/Sprites/Square", priority = (int)SpriteAssetMenuPriority.Square)]
  49. static void AssetsCreateSpritesSquare(MenuCommand menuCommand)
  50. {
  51. ItemCreationUtility.CreateAssetObjectFromTemplate<Texture2D>("Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/Square.png");
  52. }
  53. [MenuItem("Assets/Create/2D/Sprites/Circle", priority = (int)SpriteAssetMenuPriority.Circle)]
  54. static void AssetsCreateSpritesCircle(MenuCommand menuCommand)
  55. {
  56. ItemCreationUtility.CreateAssetObjectFromTemplate<Texture2D>("Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/Circle.png");
  57. }
  58. [MenuItem("Assets/Create/2D/Sprites/Capsule", priority = (int)SpriteAssetMenuPriority.Capsule)]
  59. static void AssetsCreateSpritesCapsule(MenuCommand menuCommand)
  60. {
  61. ItemCreationUtility.CreateAssetObjectFromTemplate<Texture2D>("Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/Capsule.png");
  62. }
  63. [MenuItem("Assets/Create/2D/Sprites/Isometric Diamond", priority = (int)SpriteAssetMenuPriority.IsometricDiamond)]
  64. static void AssetsCreateSpritesIsometricDiamond(MenuCommand menuCommand)
  65. {
  66. ItemCreationUtility.CreateAssetObjectFromTemplate<Texture2D>("Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/IsometricDiamond.png");
  67. }
  68. [MenuItem("Assets/Create/2D/Sprites/Hexagon Flat Top", priority = (int)SpriteAssetMenuPriority.HexagonFlatTop)]
  69. static void AssetsCreateSpritesHexagonFlatTop(MenuCommand menuCommand)
  70. {
  71. ItemCreationUtility.CreateAssetObjectFromTemplate<Texture2D>("Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/HexagonFlatTop.png");
  72. }
  73. [MenuItem("Assets/Create/2D/Sprites/Hexagon Point Top", priority = (int)SpriteAssetMenuPriority.HexagonPointTop)]
  74. static void AssetsCreateSpritesHexagonPointTop(MenuCommand menuCommand)
  75. {
  76. ItemCreationUtility.CreateAssetObjectFromTemplate<Texture2D>("Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/HexagonPointTop.png");
  77. }
  78. [MenuItem("Assets/Create/2D/Sprites/9-Sliced", priority = (int)SpriteAssetMenuPriority.Sliced9)]
  79. static void AssetsCreateSprites9Sliced(MenuCommand menuCommand)
  80. {
  81. ItemCreationUtility.CreateAssetObjectFromTemplate<Texture2D>("Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/9Sliced.png");
  82. }
  83. internal class DoCreateSpriteAtlas : ProjectWindowCallback.EndNameEditAction
  84. {
  85. public int sides;
  86. public override void Action(int instanceId, string pathName, string resourceFile)
  87. {
  88. var spriteAtlasAsset = new SpriteAtlasAsset();
  89. UnityEditorInternal.InternalEditorUtility.SaveToSerializedFileAndForget(new Object[] { spriteAtlasAsset }, pathName, true);
  90. AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate);
  91. }
  92. }
  93. static private void CreateSpriteAtlas()
  94. {
  95. var icon = EditorGUIUtility.IconContent<SpriteAtlasAsset>().image as Texture2D;
  96. DoCreateSpriteAtlas action = ScriptableObject.CreateInstance<DoCreateSpriteAtlas>();
  97. ProjectWindowUtil.StartNameEditingIfProjectWindowExists(0, action, "New Sprite Atlas.spriteatlasv2", icon, null);
  98. }
  99. [MenuItem("Assets/Create/2D/Sprite Atlas", priority = (int)SpriteAtlasAssetMenuPriority.SpriteAtlas)]
  100. static void AssetsCreateSpriteAtlas(MenuCommand menuCommand)
  101. {
  102. if (EditorSettings.spritePackerMode == SpritePackerMode.SpriteAtlasV2 || EditorSettings.spritePackerMode == SpritePackerMode.SpriteAtlasV2Build)
  103. CreateSpriteAtlas();
  104. else
  105. ItemCreationUtility.CreateAssetObject<SpriteAtlas>("New Sprite Atlas.spriteatlas");
  106. }
  107. static GameObject CreateSpriteRendererGameObject(string name, string spritePath, MenuCommand menuCommand)
  108. {
  109. var go = ItemCreationUtility.CreateGameObject(name, menuCommand, new[] {typeof(SpriteRenderer)});
  110. var sr = go.GetComponent<SpriteRenderer>();
  111. sr.sprite = AssetDatabase.LoadAssetAtPath<Sprite>(spritePath);
  112. return go;
  113. }
  114. [MenuItem("GameObject/2D Object/Sprites/Triangle", priority = (int)SpriteAssetMenuPriority.Triangle)]
  115. static void GameObjectCreateSpritesTriangle(MenuCommand menuCommand)
  116. {
  117. CreateSpriteRendererGameObject("Triangle", "Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/Triangle.png", menuCommand);
  118. }
  119. [MenuItem("GameObject/2D Object/Sprites/Square", priority = (int)SpriteAssetMenuPriority.Square)]
  120. static void GameObjectCreateSpritesSquare(MenuCommand menuCommand)
  121. {
  122. CreateSpriteRendererGameObject("Square", "Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/Square.png", menuCommand);
  123. }
  124. [MenuItem("GameObject/2D Object/Sprites/Circle", priority = (int)SpriteAssetMenuPriority.Circle)]
  125. static void GameObjectCreateSpritesCircle(MenuCommand menuCommand)
  126. {
  127. CreateSpriteRendererGameObject("Circle", "Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/Circle.png", menuCommand);
  128. }
  129. [MenuItem("GameObject/2D Object/Sprites/Capsule", priority = (int)SpriteAssetMenuPriority.Capsule)]
  130. static void GameObjectCreateSpritesCapsule(MenuCommand menuCommand)
  131. {
  132. CreateSpriteRendererGameObject("Capsule", "Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/Capsule.png", menuCommand);
  133. }
  134. [MenuItem("GameObject/2D Object/Sprites/Isometric Diamond", priority = (int)SpriteAssetMenuPriority.IsometricDiamond)]
  135. static void GameObjectCreateSpritesIsometricDiamond(MenuCommand menuCommand)
  136. {
  137. CreateSpriteRendererGameObject("Isometric Diamond", "Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/IsometricDiamond.png", menuCommand);
  138. }
  139. [MenuItem("GameObject/2D Object/Sprites/Hexagon Flat Top", priority = (int)SpriteAssetMenuPriority.HexagonFlatTop)]
  140. static void GameObjectCreateSpritesHexagonFlatTop(MenuCommand menuCommand)
  141. {
  142. CreateSpriteRendererGameObject("Hexagon Flat Top", "Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/HexagonFlatTop.png", menuCommand);
  143. }
  144. [MenuItem("GameObject/2D Object/Sprites/Hexagon Point Top", priority = (int)SpriteAssetMenuPriority.HexagonPointTop)]
  145. static void GameObjectCreateSpritesHexagonPointedTop(MenuCommand menuCommand)
  146. {
  147. CreateSpriteRendererGameObject("Hexagon Point Top", "Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/HexagonPointTop.png", menuCommand);
  148. }
  149. [MenuItem("GameObject/2D Object/Sprites/9-Sliced", priority = (int)SpriteAssetMenuPriority.Sliced9)]
  150. static void GameObjectCreateSprites9Sliced(MenuCommand menuCommand)
  151. {
  152. var go = CreateSpriteRendererGameObject("9-Sliced", "Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/9Sliced.png", menuCommand);
  153. var sr = go.GetComponent<SpriteRenderer>();
  154. if (sr.drawMode == SpriteDrawMode.Simple)
  155. {
  156. sr.drawMode = SpriteDrawMode.Tiled;
  157. sr.tileMode = SpriteTileMode.Continuous;
  158. }
  159. }
  160. [MenuItem("GameObject/2D Object/Physics/Static Sprite", priority = (int)PhysicsGameObjectMenuPriority.StaticSprite)]
  161. static void GameObjectCreatePhysicsStaticSprite(MenuCommand menuCommand)
  162. {
  163. var go = ItemCreationUtility.CreateGameObject("Static Sprite", menuCommand, new[] {typeof(SpriteRenderer), typeof(BoxCollider2D), typeof(Rigidbody2D)});
  164. var sr = go.GetComponent<SpriteRenderer>();
  165. if (sr.sprite == null)
  166. sr.sprite = AssetDatabase.LoadAssetAtPath<Sprite>(
  167. "Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/Square.png");
  168. var rigidBody = go.GetComponent<Rigidbody2D>();
  169. rigidBody.bodyType = RigidbodyType2D.Static;
  170. var boxCollider2D = go.GetComponent<BoxCollider2D>();
  171. boxCollider2D.size = sr.sprite.rect.size / sr.sprite.pixelsPerUnit;
  172. }
  173. [MenuItem("GameObject/2D Object/Physics/Dynamic Sprite", priority = (int)PhysicsGameObjectMenuPriority.DynamicSprite)]
  174. static void GameObjectCreatePhysicsDynamicSprite(MenuCommand menuCommand)
  175. {
  176. var go = ItemCreationUtility.CreateGameObject("Dynamic Sprite", menuCommand, new[] {typeof(SpriteRenderer), typeof(CircleCollider2D), typeof(Rigidbody2D)});
  177. var sr = go.GetComponent<SpriteRenderer>();
  178. if (sr.sprite == null)
  179. sr.sprite = AssetDatabase.LoadAssetAtPath<Sprite>(
  180. "Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/v2/Circle.png");
  181. var rigidBody = go.GetComponent<Rigidbody2D>();
  182. rigidBody.bodyType = RigidbodyType2D.Dynamic;
  183. }
  184. [MenuItem("GameObject/2D Object/Sprite Mask", priority = (int)SpriteMaskGameObjectMenuPriority.SpriteMask)]
  185. static void GameObjectCreateSpriteMask(MenuCommand menuCommand)
  186. {
  187. var go = ItemCreationUtility.CreateGameObject("Sprite Mask", menuCommand, new[] {typeof(SpriteMask)});
  188. go.GetComponent<SpriteMask>().sprite = AssetDatabase.LoadAssetAtPath<Sprite>(
  189. "Packages/com.unity.2d.sprite/Editor/ObjectMenuCreation/DefaultAssets/Textures/CircleMask.png");
  190. }
  191. }
  192. }