示例#1
0
 public void Destroy()
 {
     m_Cache.Destroy();
     // 清理掉加载队列
     for (int i = 0; i < m_LoadingResList.Length; i++)
     {
         var stack = m_LoadingResList[i];
         while (stack.Count > 0)
         {
             AsyncLoadProcess process = stack.Pop();
             process.Reset();
             m_ProcessPool.Recycle(process);
         }
     }
     UnRegisterTick();
 }
示例#2
0
 private void Update()
 {
     if (m_CurrentLoadingCount >= m_MaxLoadingCount)
     {
         return;
     }
     for (int i = 0; i < m_LoadingResList.Length; i++)
     {
         Stack <AsyncLoadProcess> processStack = m_LoadingResList[i];
         while (processStack.Count > 0)
         {
             if (m_CurrentLoadingCount >= m_MaxLoadingCount)
             {
                 return;
             }
             m_CurrentLoadingCount++;
             AsyncLoadProcess param = processStack.Pop();
             param.BeginLoad();
         }
     }
 }
示例#3
0
 public void LoadAsync(string assetPath, Action <AssetItem> call, LoadPriority priority = LoadPriority.Hight)
 {
     // 已加载
     if (m_Cache.IsHaveAsset(assetPath))
     {
         AssetItem item = m_Cache.Load(assetPath);
         call?.Invoke(item);
     }
     // 加载中
     else if (m_LoadingResDict.ContainsKey(assetPath))
     {
         m_LoadingResDict[assetPath].AddCallback(call);
     }
     // 从头加载
     else
     {
         AsyncLoadProcess param = m_ProcessPool.Spawn();
         param.Init(assetPath, this, priority);
         param.AddCallback(call);
         m_LoadingResDict.Add(assetPath, param);
         m_LoadingResList[(int)priority].Push(param);
     }
 }