public virtual void Update() { if (isComplete) { return; } if (!hasInit) { Init(); } bool isCpt = true; foreach (var loader in loaders.Values) { if (loader.isComplete) { if (!completedLoaders.Contains(loader)) { if (loader.hasError) { lastError = loader.error; lastErrorUrl = loader.url; errorCount++; } completedLoaders.Add(loader); if (onOneComplete != null) { onOneComplete(loader); } } } else { isCpt = false; } if (maxErrorCount > 0 && errorCount > maxErrorCount) { LoaderMgr.StopLoad(loader.url, loader.version); isCpt = true; } } if (errorCount > maxErrorCount) { Debug.LogWarningFormat("BatchLoader stopped, because load error is over maxErrorCount: {0}", maxErrorCount); } isComplete = isCpt; if (isCpt) { DoCompleted(); } }
public void Dispose() { if (hasDisposed) { return; } customData = null; hasDisposed = true; LoaderMgr.TryUnload(actualUrl, version); }
public Loader Load(string path, BKAction <string> onComplete = null, bool cache = false) { var bReturn = false; if (string.IsNullOrEmpty(path)) { bReturn = true; Debug.LogWarning("LocalResMgr.load, path is empty"); } if (HasResource(path)) { bReturn = true; UpdateCache(path, cache); } if (bReturn) { if (onComplete != null) { onComplete(path); } return(null); } var file = resourceTable.GetResourceFile(path); var loader = file == null?LoaderMgr.Load(path) : LoaderMgr.Load(file.targetFile, file.version, file.size); loader.onComplete += ld => { if (!ld.hasError) { AddResource(path, ld.GetOrgAssetBundle(), cache); } if (onComplete != null) { onComplete(path); } ld.Dispose(); }; return(loader); }
public Loader AddLoader(string url, int version = 0, int size = 0, int priority = 0, int maxRetryCount = 3) { string key = url + '_' + version.ToString(); Loader loader; if (loaders.ContainsKey(key)) { //for repeated url ignore diff of version loader = loaders[key]; Debug.LogFormat("{0} has already in load queue", url); } else { loader = LoaderMgr.NewOrGetLoad(url, version, size, priority, maxRetryCount); loaders.Add(key, loader); } return(loader); }
public BatchLoader LoadWithDependencies(string path, BKAction <string> onComplete = null, bool cache = false) { if (HasResource(path)) { return(null); } var batch = LoaderMgr.LoadBatch(); var file = resourceTable.GetResourceFile(path); if (file == null) { batch.AddLoader(path); } else { if (file.dependencies != null) { foreach (var filestr in file.dependencies) { var file2 = resourceTable.GetResourceFile(filestr); if (!HasResource(file2)) { batch.AddLoader(file2.targetFile, file2.version, file2.size); } } } batch.AddLoader(file.targetFile, file.version, file.size); } if (batch.GetLoaders().Count == 0) { batch.DisposeImmediate(); if (onComplete != null) { onComplete(path); } return(null); } batch.onComplete += bt => { foreach (var item in bt.GetLoaders()) { if (!item.Value.hasError) { AddResource(item.Key, item.Value.GetOrgAssetBundle(), cache); } } if (onComplete != null) { onComplete(path); } bt.Dispose(); }; return(batch); }