源战役客户端
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.

63 lines
2.4 KiB

  1. using UnityEngine;
  2. using System.Collections;
  3. using UnityEditor;
  4. using System.IO;
  5. using System.Collections.Generic;
  6. public static class CreateSpriteAsset
  7. {
  8. [MenuItem("Assets/Create/UGUI Sprite Asset",false,10)]
  9. static void main()
  10. {
  11. Object target = Selection.activeObject;
  12. if (target == null || target.GetType() != typeof(Texture2D))
  13. return;
  14. Texture2D sourceTex = target as Texture2D;
  15. //整体路径
  16. string filePathWithName = AssetDatabase.GetAssetPath(sourceTex);
  17. //带后缀的文件名
  18. string fileNameWithExtension = Path.GetFileName(filePathWithName);
  19. //不带后缀的文件名
  20. string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(filePathWithName);
  21. //不带文件名的路径
  22. string filePath = "Assets/LuaFramework/Resources/asset/";//filePathWithName.Replace(fileNameWithExtension, "");
  23. //LogManager.LogWarning(filePath);
  24. string newFilePath = filePath + fileNameWithoutExtension + ".asset";
  25. if (File.Exists(newFilePath)) File.Delete(newFilePath);
  26. SpriteAsset spriteAsset;
  27. // SpriteAsset spriteAsset = AssetDatabase.LoadAssetAtPath(filePath + fileNameWithoutExtension + ".asset", typeof(SpriteAsset)) as SpriteAsset;
  28. // bool isNewAsset = spriteAsset == null ? true : false;
  29. //if (isNewAsset)
  30. //{
  31. spriteAsset = ScriptableObject.CreateInstance<SpriteAsset>();
  32. spriteAsset.texSource = sourceTex;
  33. spriteAsset.listSpriteInfor = GetSpritesInfor(sourceTex);
  34. AssetDatabase.CreateAsset(spriteAsset, newFilePath);
  35. // }
  36. }
  37. public static List<SpriteInfor> GetSpritesInfor(Texture2D tex)
  38. {
  39. List<SpriteInfor> m_sprites = new List<SpriteInfor>();
  40. string filePath = UnityEditor.AssetDatabase.GetAssetPath(tex);
  41. Object[] objects = UnityEditor.AssetDatabase.LoadAllAssetsAtPath(filePath);
  42. for (int i = 0; i < objects.Length; i++)
  43. {
  44. if (objects[i].GetType() == typeof(Sprite))
  45. {
  46. SpriteInfor temp = new SpriteInfor();
  47. Sprite sprite = objects[i] as Sprite;
  48. temp.ID = i;
  49. temp.name = sprite.name;
  50. temp.pivot = sprite.pivot;
  51. temp.rect = sprite.rect;
  52. temp.sprite = sprite;
  53. m_sprites.Add(temp);
  54. }
  55. }
  56. return m_sprites;
  57. }
  58. }