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 bool OnAssetLoaded(string bunldeName, string assetName, Object obj) { var assetInfo = GetAssetInfo(bunldeName, assetName); AssetLoadRequestNode node; if (_loadingRequests.TryGetValue(assetInfo, out node)) { //empty if (node.Next == null) { _loadingRequests.Remove(assetInfo); } else { var rmNode = node.Next; node.Next = rmNode.Next; node = rmNode; } var req = node.Value; AssetLoadRequestNode.Free(node); _loadedRequests.Enqueue(req); _loadingRequestCount--; if (_useAssetPool && !_assetPool.ContainsKey(assetInfo)) { _assetPool.Add(assetInfo, obj); } TryLoadAsGameObject(obj, assetInfo, req); return(true); } return(false); }