SpriteAsset.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using UnityEngine;
  2. using System;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using Object = UnityEngine.Object;
  6. public class SpriteInfo
  7. {
  8. #region 变量
  9. public float Width;
  10. public float Height;
  11. public string Name;
  12. public Sprite Sprite;
  13. public List<Vector2> UvList;
  14. #endregion
  15. }
  16. public class SpriteAsset : MonoBehaviour
  17. {
  18. #region 变量
  19. public static Dictionary<string, SpriteInfo> SpriteInfoDic
  20. {
  21. get
  22. {
  23. if (_SpriteInfoDic == null)
  24. {
  25. GetSpriteInfo();
  26. }
  27. return _SpriteInfoDic;
  28. }
  29. set { _SpriteInfoDic = value; }
  30. }
  31. public static Dictionary<string, SpriteInfo> _SpriteInfoDic;
  32. #endregion
  33. public static void GetSpriteInfo()
  34. {
  35. Object[] objects = Resources.LoadAll("Sprite/SpriteUI/Atlas");
  36. Texture2D texture = Resources.Load<Texture2D>("Sprite/SpriteUI/Atlas");
  37. _SpriteInfoDic = new Dictionary<string, SpriteInfo>();
  38. for (int i = 0; i < objects.Length; i++)
  39. {
  40. if (objects[i] is Sprite)
  41. {
  42. Sprite sprite = (Sprite)objects[i];
  43. SpriteInfo spriteInfo = new SpriteInfo();
  44. spriteInfo.Sprite = sprite;
  45. spriteInfo.Name = sprite.name;
  46. spriteInfo.Width = sprite.rect.width;
  47. spriteInfo.Height = sprite.rect.height;
  48. float width = texture.width;
  49. float height = texture.height;
  50. Vector2 llUv = new Vector2(sprite.rect.xMin / width, sprite.rect.yMin / height);
  51. Vector2 ulUv = new Vector2(sprite.rect.xMin / width, sprite.rect.yMax / height);
  52. Vector2 urUv = new Vector2(sprite.rect.xMax / width, sprite.rect.yMax / height);
  53. Vector2 lrUv = new Vector2(sprite.rect.xMax / width, sprite.rect.yMin / height);
  54. spriteInfo.UvList = new List<Vector2>();
  55. spriteInfo.UvList.Add(llUv);
  56. spriteInfo.UvList.Add(ulUv);
  57. spriteInfo.UvList.Add(urUv);
  58. spriteInfo.UvList.Add(lrUv);
  59. _SpriteInfoDic.Add(spriteInfo.Name, spriteInfo);
  60. }
  61. }
  62. }
  63. }