コード例 #1
0
        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");
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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);
            }
        }