SpriteAsset.cs 2.7 KB

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