コード例 #1
0
        /// <summary>
        /// 缓存太多,清除最早没有使用的资源
        /// </summary>
        //protected void WashOut()
        //{
        //    //当大于缓存个数时,进行一半释放
        //    Debug.Log("washout " + m_NoRefrenceAssetMapList.Size() + "  " + m_MaxCacheCount);
        //    while (m_NoRefrenceAssetMapList.Size() >= m_MaxCacheCount)
        //    {
        //        for (int i = 0; i < m_MaxCacheCount / 2; i++)
        //        {
        //            AssetItem item = m_NoRefrenceAssetMapList.Back();
        //            DestoryAssetItem(item, true);
        //        }
        //    }
        //}

        public void OnUpdate(float elapseSeconds, float realElapseSeconds)
        {
            m_AssetBundleManager.OnUpdate(elapseSeconds, realElapseSeconds);

            if (loadingList.Count > 0)
            {
                AssetLoadAsyncOp op = loadingList[0];
                if (op.isLoading == true)
                {
                    if (op.Oper.isDone)
                    {
                        AssetItem item = ReferencePool.Acquire <AssetItem>();
                        item.Asset = op.Oper.asset;
                        CacheAsset(op.Path, item);
                        if (op.CompleteAction != null)
                        {
                            op.CompleteAction(op.Path, op.Oper.asset);
                        }

                        loadingList.RemoveAt(0);
                        ReferencePool.Release(op);
                    }
                }
                else
                {
                    op.isLoading = true;
                    //Debug.Log("load asset " + op.AssetName + "  " + op.AssetBundle);
                    op.Oper = op.AssetBundle.LoadAssetAsync(op.AssetName);
                }
            }
            else
            {
                if (waitingList.Count > 0)
                {
                    AssetLoadAsyncOp op = waitingList[0];
                    LoadAssetFromAssetBundle(op.Path, op.CompleteAction);
                    waitingList.RemoveAt(0);
                }
            }
        }