| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 | #if UNITY_EDITORusing System.Collections.Generic;using System.IO;using UnityEditor;using UnityEngine.U2D;namespace UnityEngine.UI.PackgTool{    public static class UGUICacheInfo    {        public static List<SpriteAtlas> atlasList        {            get            {                int cunt = GetAtlasFileCount();                if (_atlasList == null || cunt != atlasCount)                {                    atlasCount = cunt;                    SetAtlasList();                }                return _atlasList;            }        }        public static UGUIPackDB uguiPackDB        {            get            {                if (_uguiPackDB == null)                {                    SetUGUIPackDB();                }                return _uguiPackDB;            }        }        private static int atlasCount;        private static List<SpriteAtlas> _atlasList;        private static UGUIPackDB _uguiPackDB;        private static Dictionary<string, List<SpriteAtlas>> imagePacks = new Dictionary<string, List<SpriteAtlas>>();        public static List<TextrueJson> AllTextrueJsons        {            get            {                if (_allTextrueJsons == null)                {                    _allTextrueJsons = new List<TextrueJson>();                                    }                return _allTextrueJsons;            }        }        public static List<TextrueJson> _allTextrueJsons;        public static List<SpriteAtlas> GetAllSpriteAtlas(string name)        {            if (imagePacks.ContainsKey(name))            {                return imagePacks[name];            }            List<SpriteAtlas> spriteAtlasList = new List<SpriteAtlas>();            for (int i = 0; i < atlasList.Count; i++)            {                Sprite atlasSprite = atlasList[i].GetSprite(name);                if (atlasSprite != null)                {                    spriteAtlasList.Add(atlasList[i]);                }            }            imagePacks.Add(name,spriteAtlasList);            return spriteAtlasList;        }        public static void Clare()        {            _uguiPackDB = null;            _atlasList = null;                  }        public static TextrueJson GetTongYong(string textrueName)        {            for (int i = 0; i < AllTextrueJsons.Count; i++)            {                TextrueJson textrueJson=  AllTextrueJsons[i];                if (textrueJson.isTyPack)                {                    for (int j = 0; j < textrueJson.newTextureJson.Count; j++)                    {                        if (textrueJson.newTextureJson[j].textrueName.Equals(textrueName))                        {                            return textrueJson;                        }                    }                }            }            return null;        }        private static int GetAtlasFileCount()        {            string[] allPath = System.IO.Directory.GetFiles(Application.dataPath + "/Res/UIAtlas/", "*.spriteatlasv2");            return allPath.Length;        }        private static void SetAtlasList()        {            _atlasList = new List<SpriteAtlas>();            string[] allPath = System.IO.Directory.GetFiles(Application.dataPath + "/Res/UIAtlas/", "*.spriteatlasv2");            for (int i = 0; i < allPath.Length; i++)            {                if (allPath[i].Contains(".meta"))                {                    continue;                }                string p = allPath[i].Replace(Application.dataPath, "Assets");                SpriteAtlas spriteAtlas = AssetDatabase.LoadAssetAtPath<SpriteAtlas>(p);                if (spriteAtlas != null)                {                    _atlasList.Add(spriteAtlas);                }            }        }        public static PackInfo GetPackDB(string packName)        {            for (int i = 0; i < uguiPackDB.allPackgInfos.Count; i++)            {                if (uguiPackDB.allPackgInfos[i].packName.Equals(packName))                {                    return uguiPackDB.allPackgInfos[i];                }            }            return null;        }        public static PackInfo AddNewPackInfo(string jsonPath, TextrueJson textrueJson)        {            PackInfo packInfo = new PackInfo();            packInfo.packgJsonPath = jsonPath;            packInfo.textrueJson = textrueJson;            packInfo.packName = textrueJson.packName;            packInfo.spriteAtlas = GetSpriteAtlas( textrueJson.packName);            uguiPackDB.allPackgInfos.Add(packInfo);            string json = JsonUtility.ToJson(uguiPackDB);            string packgPath = Application.dataPath.Replace("Assets", "UGUIPack/uguiconfig.db");            File.WriteAllText(packgPath, json);            return packInfo;        }        public static SpriteAtlas GetSpriteAtlas(string packName)        {            List<SpriteAtlas> spriteAtlasList=  atlasList;            for (int i = 0; i < spriteAtlasList.Count; i++)            {                if (spriteAtlasList[i].name.Equals(packName))                {                    return spriteAtlasList[i];                }            }            return null;        }        public static void SaveDB()        {            string packgPath = Application.dataPath.Replace("Assets", "UGUIPack/uguiconfig.db");            string json = JsonUtility.ToJson(UGUICacheInfo.uguiPackDB);            File.WriteAllText(packgPath, json);        }        private static void SetUGUIPackDB()        {            string packgPath = Application.dataPath.Replace("Assets", "UGUIPack/");            if (!System.IO.Directory.Exists(packgPath))            {                Directory.CreateDirectory(packgPath);            }            string dbPath = packgPath + "uguiconfig.db";            if (!File.Exists(dbPath))            {                _uguiPackDB = new UGUIPackDB();            }            else            {                string json = File.ReadAllText(dbPath);                _uguiPackDB = JsonUtility.FromJson<UGUIPackDB>(json);            }        }    }}#endif
 |