Example #1
0
 /// <summary>
 ///  下载错误回调
 /// </summary>
 public void ErrorDelegateHandle(LoadRequest request)
 {
     if (request.errorFunction != null)
     {
         int count = request.errorFunction.GetInvocationList().GetLength(0);
         for (int i = 0; i < count; i++)
         {
             LoadRequest.ErrorDelegate errorFunc = (LoadRequest.ErrorDelegate)request.errorFunction.GetInvocationList()[i];
             try
             {
                 errorFunc.Invoke(request);
             }
             catch (Exception e)
             {
                 Debug.LogWarning("exception:" + e.Message);
             }
         }
     }
 }
Example #2
0
    /// <summary>
    /// 读取资源
    /// </summary>
    public void Load(string url,
                     LoadRequest.DownCompleteDelegate completeFunc,
                     object customParam = null,
                     string fileType    = "",
                     int priority       = 2,
                     LoadRequest.ErrorDelegate errorFunc     = null,
                     LoadRequest.ProcessDelegate processFunc = null)
    {
        url = url.Trim();
        if (string.IsNullOrEmpty(url))
        {
            return;
        }

        if (completeDict.ContainsKey(url))
        {
            // 已下载资源,直接调用回调函数
            if (customParam != null)
            {
                completeDict[url].param = customParam;
            }
            try
            {
                completeFunc.Invoke(completeDict[url]);
            }
            catch (Exception exception)
            {
                Debug.LogWarning("exception:" + exception.Message);
            }
        }
        else if (loadDict.ContainsKey(url))
        {
            // 已经提交相同请求,但是没有下载完成
            loadDict[url].completeFunction += completeFunc;
            loadDict[url].processFunction  += processFunc;
            loadDict[url].errorFunction    += errorFunc;
            loadDict[url].customParams.Add(customParam);
        }
        else if (waitDict.ContainsKey(url))
        {
            // 已经提交相同请求,但是还没轮到加载
            loadDict[url].completeFunction += completeFunc;
            loadDict[url].processFunction  += processFunc;
            loadDict[url].errorFunction    += errorFunc;
            loadDict[url].customParams.Add(customParam);
        }
        else
        {
            // 未加载过的
            if (loadDict.Count < MAX_LOAD_REQUEST)
            {
                isLoading = true;
                LoadRequest loadRequest = new LoadRequest(url, customParam, fileType, completeFunc, errorFunc, processFunc);
                if (customParam != null && customParam.GetType().ToString() == "System.Collections.Generic.List`1[System.Object]")
                {
                    loadRequest.customParams = (List <object>)customParam;
                }
                loadDict.Add(url, loadRequest);
            }
            else
            {
                // 已达到最大加载数目,加入等待队列
                LoadRequest loadRequest = new LoadRequest();
                loadRequest.requestURL       = url;
                loadRequest.completeFunction = completeFunc;
                loadRequest.errorFunction    = errorFunc;
                loadRequest.processFunction  = processFunc;
                loadRequest.customParams.Add(customParam);
                loadRequest.fileType = fileType;
                loadRequest.priotiry = priority;
                waitDict.Add(url, loadRequest);
                priorityList.Add(url);
                //maxx-m
                //priorityList = priorityList.OrderBy(s => waitDict[s].priotiry).ToList();
            }
        }
    }