AssetProvider.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. 
  2. namespace YooAsset
  3. {
  4. internal sealed class AssetProvider : ProviderOperation
  5. {
  6. private FSLoadAssetOperation _loadAssetOp;
  7. public AssetProvider(ResourceManager manager, string providerGUID, AssetInfo assetInfo) : base(manager, providerGUID, assetInfo)
  8. {
  9. }
  10. protected override void ProcessBundleResult()
  11. {
  12. if (_loadAssetOp == null)
  13. {
  14. _loadAssetOp = BundleResultObject.LoadAssetAsync(MainAssetInfo);
  15. _loadAssetOp.StartOperation();
  16. AddChildOperation(_loadAssetOp);
  17. }
  18. if (IsWaitForAsyncComplete)
  19. _loadAssetOp.WaitForAsyncComplete();
  20. _loadAssetOp.UpdateOperation();
  21. Progress = _loadAssetOp.Progress;
  22. if (_loadAssetOp.IsDone == false)
  23. return;
  24. if (_loadAssetOp.Status != EOperationStatus.Succeed)
  25. {
  26. InvokeCompletion(_loadAssetOp.Error, EOperationStatus.Failed);
  27. }
  28. else
  29. {
  30. AssetObject = _loadAssetOp.Result;
  31. InvokeCompletion(string.Empty, EOperationStatus.Succeed);
  32. }
  33. }
  34. }
  35. }