public IEnumerator Clear() { _logger.InfoFormat("Clear UnityAssetManager: Wait Asset loaded..."); if (!_bundlePool.IsIdle) { yield return(new WaitUntil(() => { UpdateBundlePool(); _logger.InfoFormat("_bundlePool: {0}", _bundlePool.Status()); return _bundlePool.IsIdle; })); } _logger.InfoFormat("Clear UnityAssetManager: Start..."); foreach (var req in _pendingRequests) { AbstractAssetLoadRequest.Free(req); } foreach (var node in _loadingRequests.Values) { var curNode = node; while (curNode != null) { AbstractAssetLoadRequest.Free(curNode.Value); AssetLoadRequestNode.Free(curNode); curNode = curNode.Next; } _loadingRequestCount = 0; } foreach (var req in _loadedRequests) { AbstractAssetLoadRequest.Free(req, true); } _assetPool.Clear(); _loadingScenes.Clear(); _objectPool.Clear(); _bundlePool.Reset(); failed_CallBack_Asset_List.Clear(); _logger.InfoFormat("Clear UnityAssetManager End"); }
private void UpdateLoadedRequest() { float time = 0; while (_loadedRequests.Count > 0 && ProcessLoadedRequestTime > 0 && time < ProcessLoadedRequestTime) { var req = _loadedRequests.Dequeue(); #if ENABLE_PROFILER var _profile = SingletonManager.Get <DurationHelp>().GetCustomProfileInfo(string.Format( "InvokeOnLoaded_{0}_{1}", req.AssetInfo.BundleName.Replace("/", "_"), req.AssetInfo.AssetName)); #endif try { #if ENABLE_PROFILER _profile.BeginProfile(); #else _loadedProfile.BeginProfile(); #endif req.InvokeOnLoaded(DisposeOperation); } catch (Exception e) { string content = req.AssetInfo.ToString(); failed_CallBack_Asset_List.Add(content + "\n" + e.ToString()); _logger.ErrorFormat("OnLoaded Callback Error: {0},\n{1}", content, e); } finally { #if ENABLE_PROFILER time += _profile.EndProfile(); #else time += _loadedProfile.EndProfile(); #endif } AbstractAssetLoadRequest.Free(req); } }
private void UpdateLoadedRequest() { while (_loadedRequests.Count > 0) { var req = _loadedRequests.Dequeue(); try { _loadedProfile.BeginProfile(); req.InvokeOnLoaded(DisposeOperation); } catch (Exception e) { _logger.Error("OnLoaded Callback Error", e); } finally { _loadedProfile.EndProfile(); } AbstractAssetLoadRequest.Free(req); } }