/// <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); } } }