123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- #if UNITY_EDITOR
- using 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
|