using UnityEngine; using System; using System.Collections; using System.Collections.Generic; using Object = UnityEngine.Object; public class SpriteInfo { #region 变量 public float Width; public float Height; public string Name; public Sprite Sprite; public List UvList; #endregion } public class SpriteAsset : MonoBehaviour { #region 变量 public static Dictionary SpriteInfoDic { get { if (_SpriteInfoDic == null) { GetSpriteInfo(); } return _SpriteInfoDic; } set { _SpriteInfoDic = value; } } public static Dictionary _SpriteInfoDic; #endregion public static void GetSpriteInfo() { Object[] objects = Resources.LoadAll("Sprite/SpriteUI/Atlas"); Texture2D texture = Resources.Load("Sprite/SpriteUI/Atlas"); _SpriteInfoDic = new Dictionary(); for (int i = 0; i < objects.Length; i++) { if (objects[i] is Sprite) { Sprite sprite = (Sprite)objects[i]; SpriteInfo spriteInfo = new SpriteInfo(); spriteInfo.Sprite = sprite; spriteInfo.Name = sprite.name; spriteInfo.Width = sprite.rect.width; spriteInfo.Height = sprite.rect.height; float width = texture.width; float height = texture.height; Vector2 llUv = new Vector2(sprite.rect.xMin / width, sprite.rect.yMin / height); Vector2 ulUv = new Vector2(sprite.rect.xMin / width, sprite.rect.yMax / height); Vector2 urUv = new Vector2(sprite.rect.xMax / width, sprite.rect.yMax / height); Vector2 lrUv = new Vector2(sprite.rect.xMax / width, sprite.rect.yMin / height); spriteInfo.UvList = new List(); spriteInfo.UvList.Add(ulUv); spriteInfo.UvList.Add(urUv); spriteInfo.UvList.Add(lrUv); spriteInfo.UvList.Add(llUv); _SpriteInfoDic.Add(spriteInfo.Name, spriteInfo); } } } }