UGUIPackLoad.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  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. //mac 有这个文件.DS_Store会报错,so. 加了一个忽略
  41. if (allFilePath[i].Contains(".meta") || allFilePath[i].Contains(".DS_Store"))
  42. {
  43. continue;
  44. }
  45. string json = File.ReadAllText(allFilePath[i]);
  46. TextrueJson textrueJson = JsonManager.FromJson<TextrueJson>(json);
  47. if (textrueJson.isTyPack&&!textrueJson.packName .Equals("daoju"))
  48. {
  49. cTaskAwaitBuffer.AddTask(AssetBundleLoadManager.Instance.LoadAssetAsyncTask<SpriteAtlas>(
  50. textrueJson.packName + ".spriteatlasv2",
  51. delegate(AssetHandle handle)
  52. {
  53. _allHandle.Add(handle);
  54. for (int j = 0; j < textrueJson.newTextureJson.Count; j++)
  55. {
  56. allSpriteAtlasMap[textrueJson.newTextureJson[j].textrueName] = handle;
  57. }
  58. }));
  59. }
  60. }
  61. await cTaskAwaitBuffer.WaitAll();
  62. return;
  63. }
  64. #endif
  65. // CTask cTask = CTask.Create(false);
  66. // cTaskAwaitBuffer.AddTask(cTask);
  67. // AssetBundleLoadManager.Instance.AddBundleTask("textruejson", delegate(BundleLoadBasic basic, object o)
  68. // {
  69. // TextAsset[] allAssets = basic.currBundle.LoadAllAssets<TextAsset>();
  70. // for (int i = 0; i < allAssets.Length; i++)
  71. // {
  72. // TextrueJson textrueJson = JsonManager.FromJson<TextrueJson>(allAssets[i].text);
  73. // if (textrueJson.isTyPack&&!textrueJson.packName .Equals("daoju"))
  74. // {
  75. // cTaskAwaitBuffer.AddTask(AssetBundleLoadManager.Instance.LoadAssetAsyncTask<SpriteAtlas>(
  76. // textrueJson.packName + ".spriteatlasv2",
  77. // delegate(AssetHandle handle)
  78. // {
  79. // _allHandle.Add(handle);
  80. // for (int j = 0; j < textrueJson.newTextureJson.Count; j++)
  81. // {
  82. // allSpriteAtlasMap[textrueJson.newTextureJson[j].textrueName] = handle;
  83. // }
  84. // }));
  85. // }
  86. //
  87. // cTask.SetResult();
  88. // }
  89. // basic.RemoveOwnTask(null);
  90. // },null);
  91. await cTaskAwaitBuffer.WaitAll();
  92. }
  93. public SpriteAtlas GetSpriteAtlas(string name)
  94. {
  95. if (allSpriteAtlasMap.TryGetValue(name, out AssetHandle assetHandle))
  96. {
  97. return assetHandle?.AssetObject<SpriteAtlas>();
  98. }
  99. return null;
  100. }
  101. }