GFGUIPackage.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using FairyGUI;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using UnityEngine;
  5. using VEngine;
  6. namespace GFGGame
  7. {
  8. public class GFGUIPackage
  9. {
  10. private static Dictionary<string, UIPackage> _packages = new Dictionary<string, UIPackage>();
  11. private static Dictionary<string, List<Asset>> _assetDic = new Dictionary<string, List<Asset>>();
  12. public static UIPackage AddPackage(string descFilePath)
  13. {
  14. if (_packages.ContainsKey(descFilePath))
  15. {
  16. return _packages[descFilePath];
  17. }
  18. var asset = Asset.Load($"{descFilePath}_fui.bytes", typeof(TextAsset));
  19. AddAsset(descFilePath, asset);
  20. var uiPackage = UIPackage.AddPackage((asset.asset as TextAsset).bytes, descFilePath, (string name, string extension, System.Type type, out DestroyMethod destroyMethod) =>
  21. {
  22. destroyMethod = DestroyMethod.Unload;
  23. string path = name + extension;
  24. if (Versions.Contains(path))
  25. {
  26. var asset = Asset.Load(path, type);
  27. AddAsset(descFilePath, asset);
  28. return asset.asset;
  29. }
  30. return null;
  31. });
  32. _packages.Add(descFilePath, uiPackage);
  33. return uiPackage;
  34. }
  35. public static void RemovePackage(string descFilePath)
  36. {
  37. UIPackage package;
  38. if (_packages.TryGetValue(descFilePath, out package))
  39. {
  40. _packages.Remove(package.name);
  41. UIPackage.RemovePackage(package.name);
  42. List<Asset> list = null;
  43. if(_assetDic.TryGetValue(descFilePath, out list))
  44. {
  45. foreach(var asset in list)
  46. {
  47. asset.Release();
  48. }
  49. }
  50. }
  51. }
  52. private static void AddAsset(string key, Asset asset)
  53. {
  54. List<Asset> list = null;
  55. if (!_assetDic.TryGetValue(key, out list))
  56. {
  57. list = new List<Asset>();
  58. _assetDic.Add(key, list);
  59. }
  60. list.Add(asset);
  61. }
  62. }
  63. }