AllAssetsOperationHandle.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using System;
  2. using System.Collections.Generic;
  3. namespace YooAsset
  4. {
  5. public sealed class AllAssetsOperationHandle : OperationHandleBase, IDisposable
  6. {
  7. private System.Action<AllAssetsOperationHandle> _callback;
  8. internal AllAssetsOperationHandle(ProviderBase provider) : base(provider)
  9. {
  10. }
  11. internal override void InvokeCallback()
  12. {
  13. _callback?.Invoke(this);
  14. }
  15. /// <summary>
  16. /// 完成委托
  17. /// </summary>
  18. public event System.Action<AllAssetsOperationHandle> Completed
  19. {
  20. add
  21. {
  22. if (IsValidWithWarning == false)
  23. throw new System.Exception($"{nameof(AllAssetsOperationHandle)} is invalid");
  24. if (Provider.IsDone)
  25. value.Invoke(this);
  26. else
  27. _callback += value;
  28. }
  29. remove
  30. {
  31. if (IsValidWithWarning == false)
  32. throw new System.Exception($"{nameof(AllAssetsOperationHandle)} is invalid");
  33. _callback -= value;
  34. }
  35. }
  36. /// <summary>
  37. /// 等待异步执行完毕
  38. /// </summary>
  39. public void WaitForAsyncComplete()
  40. {
  41. if (IsValidWithWarning == false)
  42. return;
  43. Provider.WaitForAsyncComplete();
  44. }
  45. /// <summary>
  46. /// 释放资源句柄
  47. /// </summary>
  48. public void Release()
  49. {
  50. this.ReleaseInternal();
  51. }
  52. /// <summary>
  53. /// 释放资源句柄
  54. /// </summary>
  55. public void Dispose()
  56. {
  57. this.ReleaseInternal();
  58. }
  59. /// <summary>
  60. /// 子资源对象集合
  61. /// </summary>
  62. public UnityEngine.Object[] AllAssetObjects
  63. {
  64. get
  65. {
  66. if (IsValidWithWarning == false)
  67. return null;
  68. return Provider.AllAssetObjects;
  69. }
  70. }
  71. }
  72. }