SpriteAsset.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #if UNITY_EDITOR
  2. using UnityEditor;
  3. #endif
  4. using UnityEngine;
  5. using System;
  6. using System.Linq;
  7. using System.Collections;
  8. using System.Collections.Generic;
  9. using Object = UnityEngine.Object;
  10. public class SpriteInfo
  11. {
  12. #region 变量
  13. public float Width;
  14. public float Height;
  15. public string Name;
  16. public Sprite Sprite;
  17. public List<Vector2> UvList;
  18. public SpriteInfo()
  19. {
  20. }
  21. public SpriteInfo(Sprite sprite)
  22. {
  23. Width = sprite.rect.width;
  24. Height = sprite.rect.height;
  25. Name = sprite.name;
  26. Sprite = sprite;
  27. UvList = sprite.uv.ToList();
  28. }
  29. #endregion
  30. }
  31. public class SpriteAsset : MonoBehaviour
  32. {
  33. #region 变量
  34. public static Dictionary<string, SpriteInfo> SpriteInfoDic
  35. {
  36. get
  37. {
  38. return _SpriteInfoDic;
  39. }
  40. set { _SpriteInfoDic = value; }
  41. }
  42. public static Dictionary<string, SpriteInfo> _SpriteInfoDic = new Dictionary<string, SpriteInfo>();
  43. #endregion
  44. public static void AddBundleSpriteInfo()
  45. {
  46. Object[] objects = new Object[0];
  47. Texture2D texture = new Texture2D(0,0);
  48. if (Application.isPlaying == false)
  49. {
  50. #if UNITY_EDITOR
  51. objects = AssetDatabase.LoadAllAssetsAtPath("Assets/Resource/Sprite/SpriteUI/Atlas.png");
  52. texture = AssetDatabase.LoadAssetAtPath<Texture2D>("Assets/Resource/Sprite/SpriteUI/Atlas.png");
  53. #endif
  54. }
  55. else
  56. {
  57. objects = Bundle.Atlas.LoadAllAssets();
  58. texture = Bundle.Atlas.LoadAsset<Texture2D>("Atlas");
  59. }
  60. for (int i = 0; i < objects.Length; i++)
  61. {
  62. if (objects[i] is Sprite)
  63. {
  64. Sprite sprite = (Sprite)objects[i];
  65. SpriteInfo spriteInfo = new SpriteInfo();
  66. spriteInfo.Sprite = sprite;
  67. spriteInfo.Name = sprite.name;
  68. spriteInfo.Width = sprite.rect.width;
  69. spriteInfo.Height = sprite.rect.height;
  70. float width = texture.width;
  71. float height = texture.height;
  72. Vector2 llUv = new Vector2(sprite.rect.xMin / width, sprite.rect.yMin / height);
  73. Vector2 ulUv = new Vector2(sprite.rect.xMin / width, sprite.rect.yMax / height);
  74. Vector2 urUv = new Vector2(sprite.rect.xMax / width, sprite.rect.yMax / height);
  75. Vector2 lrUv = new Vector2(sprite.rect.xMax / width, sprite.rect.yMin / height);
  76. spriteInfo.UvList = new List<Vector2>();
  77. spriteInfo.UvList.Add(ulUv);
  78. spriteInfo.UvList.Add(urUv);
  79. spriteInfo.UvList.Add(lrUv);
  80. spriteInfo.UvList.Add(llUv);
  81. _SpriteInfoDic.Add(spriteInfo.Name, spriteInfo);
  82. }
  83. }
  84. }
  85. }