UGUIPackLoad.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using System.Threading.Tasks;
  6. using Core.AssetLoadTool.Asset;
  7. using Fort23.Core;
  8. using Fort23.UTool;
  9. using UnityEngine;
  10. using UnityEngine.U2D;
  11. using UnityEngine.UI;
  12. using UnityEngine.UI.PackgTool;
  13. using Utility;
  14. public class UGUIPackLoad : IUGUIPackLoad
  15. {
  16. public void Dispose()
  17. {
  18. for (int i = 0; i < _allHandle.Count; i++)
  19. {
  20. _allHandle[i].Release();
  21. }
  22. _allHandle.Clear();
  23. allSpriteAtlasMap.Clear();
  24. }
  25. private Map<string, AssetHandle> allSpriteAtlasMap = new Map<string, AssetHandle>();
  26. private List<AssetHandle> _allHandle = new List<AssetHandle>();
  27. public async Task InitPack()
  28. {
  29. if (!Application.isPlaying)
  30. {
  31. return;
  32. }
  33. CTaskAwaitBuffer cTaskAwaitBuffer = new CTaskAwaitBuffer();
  34. #if UNITY_EDITOR
  35. if (AssetBundleLoadManager.Instance.BundleLoadType == BundleLoadType.LocalAsset)
  36. {
  37. string[] allFilePath = System.IO.Directory.GetFiles(Application.dataPath + @"/Art/UIAssets/TextrueJson/");
  38. for (int i = 0; i < allFilePath.Length; i++)
  39. {
  40. if (allFilePath[i].Contains(".meta"))
  41. {
  42. continue;
  43. }
  44. string json = File.ReadAllText(allFilePath[i]);
  45. TextrueJson textrueJson = JsonManager.FromJson<TextrueJson>(json);
  46. if (textrueJson.isTyPack&&!textrueJson.packName .Equals("daoju"))
  47. {
  48. cTaskAwaitBuffer.AddTask(AssetBundleLoadManager.Instance.LoadAssetAsyncTask<SpriteAtlas>(
  49. textrueJson.packName + ".spriteatlasv2",
  50. delegate(AssetHandle handle)
  51. {
  52. _allHandle.Add(handle);
  53. for (int j = 0; j < textrueJson.newTextureJson.Count; j++)
  54. {
  55. allSpriteAtlasMap[textrueJson.newTextureJson[j].textrueName] = handle;
  56. }
  57. }));
  58. }
  59. }
  60. await cTaskAwaitBuffer.WaitAll();
  61. return;
  62. }
  63. #endif
  64. // CTask cTask = CTask.Create(false);
  65. // cTaskAwaitBuffer.AddTask(cTask);
  66. // AssetBundleLoadManager.Instance.AddBundleTask("textruejson", delegate(BundleLoadBasic basic, object o)
  67. // {
  68. // TextAsset[] allAssets = basic.currBundle.LoadAllAssets<TextAsset>();
  69. // for (int i = 0; i < allAssets.Length; i++)
  70. // {
  71. // TextrueJson textrueJson = JsonManager.FromJson<TextrueJson>(allAssets[i].text);
  72. // if (textrueJson.isTyPack&&!textrueJson.packName .Equals("daoju"))
  73. // {
  74. // cTaskAwaitBuffer.AddTask(AssetBundleLoadManager.Instance.LoadAssetAsyncTask<SpriteAtlas>(
  75. // textrueJson.packName + ".spriteatlasv2",
  76. // delegate(AssetHandle handle)
  77. // {
  78. // _allHandle.Add(handle);
  79. // for (int j = 0; j < textrueJson.newTextureJson.Count; j++)
  80. // {
  81. // allSpriteAtlasMap[textrueJson.newTextureJson[j].textrueName] = handle;
  82. // }
  83. // }));
  84. // }
  85. //
  86. // cTask.SetResult();
  87. // }
  88. // basic.RemoveOwnTask(null);
  89. // },null);
  90. await cTaskAwaitBuffer.WaitAll();
  91. }
  92. public SpriteAtlas GetSpriteAtlas(string name)
  93. {
  94. if (allSpriteAtlasMap.TryGetValue(name, out AssetHandle assetHandle))
  95. {
  96. return assetHandle?.AssetObject<SpriteAtlas>();
  97. }
  98. return null;
  99. }
  100. }