DatabaseRawFileProvider.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. 
  2. namespace YooAsset
  3. {
  4. internal class DatabaseRawFileProvider : ProviderBase
  5. {
  6. public DatabaseRawFileProvider(ResourceManager manager, string providerGUID, AssetInfo assetInfo) : base(manager, providerGUID, assetInfo)
  7. {
  8. }
  9. internal override void InternalOnStart()
  10. {
  11. DebugBeginRecording();
  12. }
  13. internal override void InternalOnUpdate()
  14. {
  15. #if UNITY_EDITOR
  16. if (IsDone)
  17. return;
  18. if (_steps == ESteps.None)
  19. {
  20. // 检测资源文件是否存在
  21. string guid = UnityEditor.AssetDatabase.AssetPathToGUID(MainAssetInfo.AssetPath);
  22. if (string.IsNullOrEmpty(guid))
  23. {
  24. string error = $"Not found asset : {MainAssetInfo.AssetPath}";
  25. YooLogger.Error(error);
  26. InvokeCompletion(error, EOperationStatus.Failed);
  27. return;
  28. }
  29. _steps = ESteps.CheckBundle;
  30. // 注意:模拟异步加载效果提前返回
  31. if (IsWaitForAsyncComplete == false)
  32. return;
  33. }
  34. // 1. 检测资源包
  35. if (_steps == ESteps.CheckBundle)
  36. {
  37. if (IsWaitForAsyncComplete)
  38. {
  39. OwnerBundle.WaitForAsyncComplete();
  40. }
  41. if (OwnerBundle.IsDone() == false)
  42. return;
  43. if (OwnerBundle.Status != BundleLoaderBase.EStatus.Succeed)
  44. {
  45. string error = OwnerBundle.LastError;
  46. InvokeCompletion(error, EOperationStatus.Failed);
  47. return;
  48. }
  49. _steps = ESteps.Checking;
  50. }
  51. // 2. 检测加载结果
  52. if (_steps == ESteps.Checking)
  53. {
  54. RawFilePath = MainAssetInfo.AssetPath;
  55. InvokeCompletion(string.Empty, EOperationStatus.Succeed);
  56. }
  57. #endif
  58. }
  59. }
  60. }