using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Threading.Tasks; using Core.AssetLoadTool.Asset; using Fort23.Core; using Fort23.UTool; using UnityEngine; using UnityEngine.U2D; using UnityEngine.UI; using UnityEngine.UI.PackgTool; using Utility; public class UGUIPackLoad : IUGUIPackLoad { public void Dispose() { for (int i = 0; i < _allHandle.Count; i++) { _allHandle[i].Release(); } _allHandle.Clear(); allSpriteAtlasMap.Clear(); } private Map allSpriteAtlasMap = new Map(); private List _allHandle = new List(); public async Task InitPack() { if (!Application.isPlaying) { return; } CTaskAwaitBuffer cTaskAwaitBuffer = new CTaskAwaitBuffer(); #if UNITY_EDITOR if (AssetBundleLoadManager.Instance.BundleLoadType == BundleLoadType.LocalAsset) { string[] allFilePath = System.IO.Directory.GetFiles(Application.dataPath + @"/Art/UIAssets/TextrueJson/"); for (int i = 0; i < allFilePath.Length; i++) { //mac 有这个文件.DS_Store会报错,so. 加了一个忽略 if (allFilePath[i].Contains(".meta") || allFilePath[i].Contains(".DS_Store")) { continue; } string json = File.ReadAllText(allFilePath[i]); TextrueJson textrueJson = JsonManager.FromJson(json); if (textrueJson.isTyPack&&!textrueJson.packName .Equals("daoju")) { cTaskAwaitBuffer.AddTask(AssetBundleLoadManager.Instance.LoadAssetAsyncTask( textrueJson.packName + ".spriteatlasv2", delegate(AssetHandle handle) { _allHandle.Add(handle); for (int j = 0; j < textrueJson.newTextureJson.Count; j++) { allSpriteAtlasMap[textrueJson.newTextureJson[j].textrueName] = handle; } })); } } await cTaskAwaitBuffer.WaitAll(); return; } #endif // CTask cTask = CTask.Create(false); // cTaskAwaitBuffer.AddTask(cTask); // AssetBundleLoadManager.Instance.AddBundleTask("textruejson", delegate(BundleLoadBasic basic, object o) // { // TextAsset[] allAssets = basic.currBundle.LoadAllAssets(); // for (int i = 0; i < allAssets.Length; i++) // { // TextrueJson textrueJson = JsonManager.FromJson(allAssets[i].text); // if (textrueJson.isTyPack&&!textrueJson.packName .Equals("daoju")) // { // cTaskAwaitBuffer.AddTask(AssetBundleLoadManager.Instance.LoadAssetAsyncTask( // textrueJson.packName + ".spriteatlasv2", // delegate(AssetHandle handle) // { // _allHandle.Add(handle); // for (int j = 0; j < textrueJson.newTextureJson.Count; j++) // { // allSpriteAtlasMap[textrueJson.newTextureJson[j].textrueName] = handle; // } // })); // } // // cTask.SetResult(); // } // basic.RemoveOwnTask(null); // },null); await cTaskAwaitBuffer.WaitAll(); } public SpriteAtlas GetSpriteAtlas(string name) { if (allSpriteAtlasMap.TryGetValue(name, out AssetHandle assetHandle)) { return assetHandle?.AssetObject(); } return null; } }