GFGGLoader.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using UnityEngine;
  2. using FairyGUI;
  3. using YooAsset;
  4. namespace GFGGame
  5. {
  6. public class GFGGLoader : GLoader
  7. {
  8. private AssetHandle handle;
  9. //TODO webgl异步加载
  10. protected override void LoadExternal()
  11. {
  12. //LogUtil.LogEditor($"GFGGLoader this.url {this.url}");
  13. //if (!YooAssets.CheckResExist(this.url))
  14. //{
  15. // return;
  16. //}
  17. //bool isAsync = !this.url.Contains(ResPathUtil.TEXTURE_BGIMG_DIR_PATH);
  18. //异步
  19. handle = YooAssets.LoadAssetAsync<Texture2D>(this.url);
  20. handle.Completed += Handle_Completed;
  21. // if (isAsync)
  22. // {
  23. // //异步
  24. // handle = YooAssets.LoadAssetAsync<Texture2D>(this.url);
  25. // handle.Completed += Handle_Completed;
  26. // }
  27. // else
  28. // {
  29. // //同步
  30. // handle = YooAssets.LoadAssetSync<Texture2D>(this.url);
  31. // Handle_Completed(handle);
  32. // }
  33. }
  34. protected override void FreeExternal(NTexture texture)
  35. {
  36. //释放外部载入的资源
  37. if(handle != null)
  38. {
  39. handle.Release();
  40. handle = null;
  41. }
  42. }
  43. void Handle_Completed(AssetHandle handle)
  44. {
  45. if(handle.GetAssetInfo().AssetPath != this.url)
  46. {
  47. handle.Release();
  48. return;
  49. }
  50. Texture2D texture = handle.AssetObject as Texture2D;
  51. if (texture != null)
  52. {
  53. onExternalLoadSuccess(new NTexture(texture));
  54. }
  55. else
  56. {
  57. onExternalLoadFailed();
  58. }
  59. }
  60. }
  61. }