public void Release() { referenceCount--; if (referenceCount == 0) { LoadState = AssetLoadState.Unload; //释放依赖 assetLoader.UnloadAll(); assetLoader.ReleaseAssetLoader(); var assetBundle = asset as AssetBundle; if (assetBundle != null) { assetBundle.Unload(true); } unloadCallback?.Invoke(Name); Clear(); assetBundleLoadPool.Release(this); } }
public void LoadAssetSync(System.Action <Object> onLoaded) { switch (LoadState) { case AssetLoadState.NotLoad: LoadState = AssetLoadState.Loading; assetBundleCreateRequest = AssetBundle.LoadFromFileAsync(ABManifest.GetAssetBundleByAssetPath(assetPath)); var directDependencies = ABManifest.AssetBundleManifest.GetDirectDependencies(ABManifest.GetAssetNameByAssetPath(assetPath)); totalDirectDependecntCount = directDependencies.Length; foreach (var directDependent in directDependencies) { assetLoader.LoadAssetBundleSync(directDependent, DirectDependentCallback); } this.onLoaded += onLoaded; break; case AssetLoadState.Loading: case AssetLoadState.Loaded: this.onLoaded += onLoaded; break; case AssetLoadState.Unload: Debug.LogError("资源已卸载,任在加载。"); break; } }
private void ResourceRequestCompleted(AsyncOperation obj) { LoadState = AssetLoadState.Loaded; Asset = resourceRequest.asset; resourceRequest = null; onLoaded?.Invoke(Asset); onLoaded = null; }
public void LoadAsset() { if (LoadState == AssetLoadState.NotLoad) { LoadState = AssetLoadState.Loading; Asset = Resources.Load(this.assetPath, loadType); LoadState = AssetLoadState.Loaded; } }
protected virtual void Reset() { mAssetPath = null; mUseCount = 0; mAutoRelease = true; mLoadState = AssetLoadState.None; mErrorMessage = string.Empty; LoadFinishCallback = null; LoadSuccessCallback = null; LoadFailCallback = null; }
public void LoadAsset() { if (LoadState == AssetLoadState.NotLoad) { LoadState = AssetLoadState.Loading; Asset = UnityEditor.AssetDatabase.LoadAssetAtPath(AssetPathConvertEditoPath(this.assetPath, loadType), loadType); LoadState = AssetLoadState.Loaded; } }
public void Initialize(string path, System.Type loadType, System.Action <string> unloadCallback) { referenceCount = 0; name = path; assetPath = path.Substring("resources://".Length); LoadState = AssetLoadState.NotLoad; this.loadType = loadType; this.unloadCallback = unloadCallback; }
public void Initialize(string path, System.Type loadType, System.Action <string> unloadCallback) { referenceCount = 0; assetPath = path; name = path; LoadState = AssetLoadState.NotLoad; this.loadType = loadType; this.unloadCallback = unloadCallback; assetLoader = AssetLoader.GetAssetLoader(); }
private void AssetBundleRequest_completed(AsyncOperation asyncOperation) { LoadState = AssetLoadState.Loaded; var assetBundle = assetBundleCreateRequest.assetBundle; if (loadType.Equals(typeAB) == false) { asset = assetBundle.LoadAsset(System.IO.Path.GetFileName(this.assetPath), loadType); } assetBundleCreateRequest = null; onLoaded?.Invoke(asset); onLoaded = null; }
public void LoadAsset() { switch (LoadState) { case AssetLoadState.NotLoad: LoadState = AssetLoadState.Loading; string abName = ABManifest.GetAssetBundleByAssetPath(assetPath); var assetBundle = AssetBundle.LoadFromFile(abName); if (loadType.Equals(typeAB) == false) { asset = assetBundle.LoadAsset(ABManifest.GetAssetNameByAssetPath(this.assetPath), loadType); } var directDependencies = ABManifest.AssetBundleManifest.GetDirectDependencies(System.IO.Path.GetFileName(abName)); totalDirectDependecntCount = directDependencies.Length; foreach (var directDependent in directDependencies) { assetLoader.LoadAssetBundle(directDependent); } LoadState = AssetLoadState.Loaded; break; case AssetLoadState.Loading: Debug.LogError("资源已在异步加载队列中,无法立即加载。AssetPath:" + this.assetPath); break; case AssetLoadState.Loaded: break; case AssetLoadState.Unload: Debug.LogError("资源已卸载,任在加载。"); break; case AssetLoadState.LoadError: break; } }
public void Release() { referenceCount--; if (referenceCount == 0) { LoadState = AssetLoadState.Unload; if (Asset is GameObject == false) { Resources.UnloadAsset(Asset); } unloadCallback?.Invoke(Name); Clear(); editorLoadPool.Release(this); } }
public void LoadAssetSync(System.Action <Object> onLoaded) { switch (LoadState) { case AssetLoadState.NotLoad: LoadState = AssetLoadState.Loading; resourceRequest = Resources.LoadAsync(assetPath, loadType); resourceRequest.completed += ResourceRequestCompleted; this.onLoaded += onLoaded; break; case AssetLoadState.Loading: this.onLoaded += onLoaded; break; case AssetLoadState.Loaded: onLoaded?.Invoke(Asset); break; } }