SpriteAsset.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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 AddAllBundleSpriteInfo()
  45. {
  46. Sprite[] sprites = new Sprite[0];
  47. sprites = Bundle.Atlas.LoadAssetWithSubAssets<Sprite>("Atlas");
  48. AddBundleSpriteInfo(sprites);
  49. sprites = Bundle.Scene.LoadAssetWithSubAssets<Sprite>("Expression");
  50. AddBundleSpriteInfo(sprites);
  51. }
  52. public static void AddBundleSpriteInfo(Sprite[] sprites)
  53. {
  54. for (int i = 0; i < sprites.Length; i++)
  55. {
  56. ResourceManager.ObjectDictionary.UniqueAdd(sprites[i].name, sprites[i]);
  57. SpriteInfo spriteInfo = new SpriteInfo();
  58. spriteInfo.Name = sprites[i].name;
  59. spriteInfo.Width = sprites[i].rect.width;
  60. spriteInfo.Height = sprites[i].rect.height;
  61. float width = sprites[i].texture.width;
  62. float height = sprites[i].texture.height;
  63. Vector2 llUv = new Vector2(sprites[i].rect.xMin / width, sprites[i].rect.yMin / height);
  64. Vector2 ulUv = new Vector2(sprites[i].rect.xMin / width, sprites[i].rect.yMax / height);
  65. Vector2 urUv = new Vector2(sprites[i].rect.xMax / width, sprites[i].rect.yMax / height);
  66. Vector2 lrUv = new Vector2(sprites[i].rect.xMax / width, sprites[i].rect.yMin / height);
  67. spriteInfo.UvList = new List<Vector2>();
  68. spriteInfo.UvList.Add(ulUv);
  69. spriteInfo.UvList.Add(urUv);
  70. spriteInfo.UvList.Add(lrUv);
  71. spriteInfo.UvList.Add(llUv);
  72. SpriteInfoDic.Add(spriteInfo.Name, spriteInfo);
  73. }
  74. }
  75. }