SpriteAsset.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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. if (_SpriteInfoDic == null)
  39. {
  40. GetSpriteInfo();
  41. }
  42. return _SpriteInfoDic;
  43. }
  44. set { _SpriteInfoDic = value; }
  45. }
  46. public static Dictionary<string, SpriteInfo> _SpriteInfoDic;
  47. #endregion
  48. public static void GetSpriteInfo()
  49. {
  50. Object[] objects = new Object[0];
  51. Texture2D texture = new Texture2D(0,0);
  52. if (Application.isPlaying == false)
  53. {
  54. #if UNITY_EDITOR
  55. objects = AssetDatabase.LoadAllAssetsAtPath("Assets/Resource/Sprite/SpriteUI/Atlas.png");
  56. texture = AssetDatabase.LoadAssetAtPath<Texture2D>("Assets/Resource/Sprite/SpriteUI/Atlas.png");
  57. #endif
  58. }
  59. else
  60. {
  61. objects = Bundle.Atlas.LoadAllAssets();
  62. texture = Bundle.Atlas.LoadAsset<Texture2D>("Atlas");
  63. }
  64. _SpriteInfoDic = new Dictionary<string, SpriteInfo>();
  65. for (int i = 0; i < objects.Length; i++)
  66. {
  67. if (objects[i] is Sprite)
  68. {
  69. Sprite sprite = (Sprite)objects[i];
  70. SpriteInfo spriteInfo = new SpriteInfo();
  71. spriteInfo.Sprite = sprite;
  72. spriteInfo.Name = sprite.name;
  73. spriteInfo.Width = sprite.rect.width;
  74. spriteInfo.Height = sprite.rect.height;
  75. float width = texture.width;
  76. float height = texture.height;
  77. Vector2 llUv = new Vector2(sprite.rect.xMin / width, sprite.rect.yMin / height);
  78. Vector2 ulUv = new Vector2(sprite.rect.xMin / width, sprite.rect.yMax / height);
  79. Vector2 urUv = new Vector2(sprite.rect.xMax / width, sprite.rect.yMax / height);
  80. Vector2 lrUv = new Vector2(sprite.rect.xMax / width, sprite.rect.yMin / height);
  81. spriteInfo.UvList = new List<Vector2>();
  82. spriteInfo.UvList.Add(ulUv);
  83. spriteInfo.UvList.Add(urUv);
  84. spriteInfo.UvList.Add(lrUv);
  85. spriteInfo.UvList.Add(llUv);
  86. _SpriteInfoDic.Add(spriteInfo.Name, spriteInfo);
  87. }
  88. }
  89. }
  90. }