暂无描述
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

DefaultAssetCreation.cs 3.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using System;
  2. using System.IO;
  3. using UnityEngine;
  4. namespace UnityEditor.Tilemaps
  5. {
  6. internal static class DefaultAssetCreation
  7. {
  8. const int k_TilePaletteAssetMenuPriority = 4;
  9. static internal Action<int, ProjectWindowCallback.EndNameEditAction, string, Texture2D, string> StartNewAssetNameEditingDelegate = ProjectWindowUtil.StartNameEditingIfProjectWindowExists;
  10. [MenuItem("Assets/Create/2D/Tile Palette/Rectangular", priority = k_TilePaletteAssetMenuPriority)]
  11. static void MenuItem_AssetsCreate2DTilePaletteRectangular(MenuCommand menuCommand)
  12. {
  13. CreateAssetObject("Rectangular Palette", GridLayout.CellLayout.Rectangle, GridLayout.CellSwizzle.XYZ, GridPalette.CellSizing.Automatic, new Vector3(1, 1, 0));
  14. }
  15. [MenuItem("Assets/Create/2D/Tile Palette/Hexagonal Flat-Top", priority = k_TilePaletteAssetMenuPriority)]
  16. static void MenuItem_AssetsCreate2DTilePaletteHexagonalFlatTop(MenuCommand menuCommand)
  17. {
  18. CreateAssetObject("Hexagon Flat-Top Palette", GridLayout.CellLayout.Hexagon, GridLayout.CellSwizzle.YXZ, GridPalette.CellSizing.Manual, new Vector3(0.8659766f, 1, 0));
  19. }
  20. [MenuItem("Assets/Create/2D/Tile Palette/Hexagonal Pointed-Top", priority = k_TilePaletteAssetMenuPriority)]
  21. static void MenuItem_AssetsCreate2DTilePaletteHexagonalPointedTop(MenuCommand menuCommand)
  22. {
  23. CreateAssetObject("Hexagon Pointed-Top Palette", GridLayout.CellLayout.Hexagon, GridLayout.CellSwizzle.XYZ, GridPalette.CellSizing.Manual, new Vector3(0.8659766f, 1, 0));
  24. }
  25. [MenuItem("Assets/Create/2D/Tile Palette/Isometric", priority = k_TilePaletteAssetMenuPriority)]
  26. static void MenuItem_AssetsCreate2DTilePaletteIsometric(MenuCommand menuCommand)
  27. {
  28. CreateAssetObject("Isometric Palette", GridLayout.CellLayout.Isometric, GridLayout.CellSwizzle.XYZ, GridPalette.CellSizing.Manual, new Vector3(1, 0.5f, 0));
  29. }
  30. static void CreateAssetObject(string defaultAssetName, GridLayout.CellLayout layout, GridLayout.CellSwizzle swizzle, GridPalette.CellSizing cellSizing, Vector3 cellSize)
  31. {
  32. var assetSelectionPath = AssetDatabase.GetAssetPath(Selection.activeObject);
  33. var isFolder = false;
  34. if (!string.IsNullOrEmpty(assetSelectionPath))
  35. isFolder = File.GetAttributes(assetSelectionPath).HasFlag(FileAttributes.Directory);
  36. var path = ProjectWindowUtil.GetActiveFolderPath();
  37. if (isFolder)
  38. {
  39. path = assetSelectionPath;
  40. }
  41. var destName = AssetDatabase.GenerateUniqueAssetPath(Path.Combine(path, defaultAssetName));
  42. var icon = EditorGUIUtility.IconContent<GameObject>().image as Texture2D;
  43. CreateAssetEndNameEditAction action = ScriptableObject.CreateInstance<CreateAssetEndNameEditAction>();
  44. action.swizzle = swizzle;
  45. action.layout = layout;
  46. action.cellSize = cellSize;
  47. action.cellSizing = cellSizing;
  48. StartNewAssetNameEditingDelegate(0, action, destName, icon, "");
  49. }
  50. internal class CreateAssetEndNameEditAction : ProjectWindowCallback.EndNameEditAction
  51. {
  52. public GridLayout.CellLayout layout { get; set; }
  53. public GridLayout.CellSwizzle swizzle { get; set; }
  54. public Vector3 cellSize { get; set; }
  55. public GridPalette.CellSizing cellSizing { get; set; }
  56. public override void Action(int instanceId, string pathName, string resourceFile)
  57. {
  58. GridPaletteUtility.CreateNewPalette(Path.GetDirectoryName(pathName), Path.GetFileName(pathName), layout,
  59. cellSizing, cellSize, swizzle);
  60. }
  61. }
  62. }
  63. }