#if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; using System; using System.Linq; 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; public SpriteInfo() { } public SpriteInfo(Sprite sprite) { Width = sprite.rect.width; Height = sprite.rect.height; Name = sprite.name; Sprite = sprite; UvList = sprite.uv.ToList(); } #endregion } public class SpriteAsset : MonoBehaviour { #region 变量 public static Dictionary SpriteInfoDic { get { return _SpriteInfoDic; } set { _SpriteInfoDic = value; } } public static Dictionary _SpriteInfoDic = new Dictionary(); #endregion public static void AddAllBundleSpriteInfo() { Sprite[] sprites = new Sprite[0]; sprites = Bundle.Atlas.LoadAssetWithSubAssets("Atlas"); AddBundleSpriteInfo(sprites); sprites = Bundle.Scene.LoadAssetWithSubAssets("Expression"); AddBundleSpriteInfo(sprites); } public static void AddBundleSpriteInfo(Sprite[] sprites) { for (int i = 0; i < sprites.Length; i++) { ResourceManager.ObjectDictionary.UniqueAdd(sprites[i].name, sprites[i]); SpriteInfo spriteInfo = new SpriteInfo(); spriteInfo.Name = sprites[i].name; spriteInfo.Width = sprites[i].rect.width; spriteInfo.Height = sprites[i].rect.height; float width = sprites[i].texture.width; float height = sprites[i].texture.height; Vector2 llUv = new Vector2(sprites[i].rect.xMin / width, sprites[i].rect.yMin / height); Vector2 ulUv = new Vector2(sprites[i].rect.xMin / width, sprites[i].rect.yMax / height); Vector2 urUv = new Vector2(sprites[i].rect.xMax / width, sprites[i].rect.yMax / height); Vector2 lrUv = new Vector2(sprites[i].rect.xMax / width, sprites[i].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); } } }