public override void Update() { if (IsDone()) { return; } if (LoadState == EAssetFileLoadState.None) { LoadState = EAssetFileLoadState.LoadAssetFile; } // 1. 加载主资源对象 if (LoadState == EAssetFileLoadState.LoadAssetFile) { // Load resource folder file System.Type systemType = AssetSystem.MakeSystemType(AssetType); if (systemType == null) { _cacheRequest = Resources.LoadAsync(LoadPath); } else { _cacheRequest = Resources.LoadAsync(LoadPath, systemType); } LoadState = EAssetFileLoadState.CheckAssetFile; } // 2. 检测AssetObject加载结果 if (LoadState == EAssetFileLoadState.CheckAssetFile) { if (_cacheRequest.isDone == false) { return; } _mainAsset = _cacheRequest.asset; // Check scene if (AssetType == EAssetType.Scene) { LoadState = EAssetFileLoadState.LoadAssetFileOK; LoadCallback?.Invoke(this); return; } // Check error if (_mainAsset == null) { LogSystem.Log(ELogType.Warning, $"Failed to load resource file : {LoadPath}"); LoadState = EAssetFileLoadState.LoadAssetFileFailed; LoadCallback?.Invoke(this); } else { LoadState = EAssetFileLoadState.LoadAssetFileOK; LoadCallback?.Invoke(this); } } }
public override void Update() { #if UNITY_EDITOR if (IsDone()) { return; } if (LoadState == EAssetFileLoadState.None) { LoadState = EAssetFileLoadState.LoadAssetFile; } // 1. 加载主资源对象 if (LoadState == EAssetFileLoadState.LoadAssetFile) { // Load from database System.Type systemType = AssetSystem.MakeSystemType(AssetType); string assetPath = GetDatabaseAssetPath(LoadPath); _mainAsset = UnityEditor.AssetDatabase.LoadAssetAtPath(assetPath, systemType); LoadState = EAssetFileLoadState.CheckAssetFile; // 注意:为了模拟异步加载效果,这里直接返回 return; } // 2. 检测AssetObject加载结果 if (LoadState == EAssetFileLoadState.CheckAssetFile) { // Check scene if (AssetType == EAssetType.Scene) { LoadState = EAssetFileLoadState.LoadAssetFileOK; LoadCallback?.Invoke(this); return; } // Check error if (_mainAsset == null) { LogSystem.Log(ELogType.Warning, $"Failed to load database file : {LoadPath}"); LoadState = EAssetFileLoadState.LoadAssetFileFailed; LoadCallback?.Invoke(this); } else { LoadState = EAssetFileLoadState.LoadAssetFileOK; LoadCallback?.Invoke(this); } } #else throw new Exception("AssetDatabaseLoader only support unity editor."); #endif }
/// <summary> /// 轮询更新方法 /// </summary> public void Update() { if (IsDone()) { return; } if (LoadState == EAssetObjectLoadState.None) { LoadState = EAssetObjectLoadState.LoadAssetObject; } // 1. 加载主资源对象 if (LoadState == EAssetObjectLoadState.LoadAssetObject) { // Load main asset System.Type systemType = AssetSystem.MakeSystemType(AssetType); _cacheRequest = _cacheBundle.LoadAssetAsync(AssetName, systemType); LoadState = EAssetObjectLoadState.CheckAssetObject; } // 2. 检测AssetObject加载结果 if (LoadState == EAssetObjectLoadState.CheckAssetObject) { if (_cacheRequest.isDone == false) { return; } AssetObject = _cacheRequest.asset; // Check error if (AssetObject == null) { LoadState = EAssetObjectLoadState.LoadAssetObjectFailed; LoadCallback?.Invoke(AssetObject, false); } else { LoadState = EAssetObjectLoadState.LoadAssetObjectOK; LoadCallback?.Invoke(AssetObject, true); } } }