Exemple #1
0
        //在LoadAsssetBundle时inUrl链接会拼入用^拆分cache路径,用&拆分连接参数
        public RequestHandler(string inHelpInfo, NetCtrlManager net, string inUrl, WebQuestDelegate p = null, WebQuestDelegate eFalse = null, WebQuestDelegateText eText = null, WebQuestDelegateTexture eTexture = null, WebQuestDelegateAssetBundle eAssetBundle = null)
        {
            if (inUrl == "")
            {
                Debug.LogError("输入的URL为空!");
                return;
            }
            name           = inHelpInfo;
            netCtrlManager = net;
            helpInfo       = inHelpInfo;
            Debug.Log("InputURL: <color=blue>" + inUrl + "</color>");

            timing = 0;
            string[] splitStringGroup = inUrl.Split('^');
            url = splitStringGroup[0];

            //保存所有的参数
            paddingArgUrlSplitGroup = url.Split('?');
            if (paddingArgUrlSplitGroup.Length > 1)
            {
                //除去参数的连接
                urlWithoutArg           = paddingArgUrlSplitGroup[0];
                paddingArgUrlSplitGroup = paddingArgUrlSplitGroup[1].Split('&');
            }

//            string[] urlSplit = url.Split('/');
//            name = urlSplit[urlSplit.Length - 1];

            //Cache路径
            if (splitStringGroup.Length > 1)
            {
                paddingUrl           = splitStringGroup[1];
                paddingUrlSplitGroup = paddingUrl.Split(',');
            }

            if (url == "")
            {
                processInfo = "url为空";
                return;
            }

            isNeedProcess = true;
            onProgress   += GetProgress;

            if (p != null)
            {
                onProgress += p;
                onTrue     += p;
                onFalse    += p;
            }

            if (eFalse != null)
            {
                onFalse += eFalse;
            }


            if (eText != null)
            {
                request      = UnityWebRequest.Get(url);
                requestType  = 0;
                onEndText   += eText;
                finalTimeOut = timeOut;
            }
            else if (eTexture != null)
            {
                WWWForm form = new WWWForm();

                form.AddField("downloadId", paddingArgUrlSplitGroup[0].Split('=')[1]);
                form.AddField("downloadType", paddingArgUrlSplitGroup[1].Split('=')[1]);
                form.AddField("mediaType", paddingArgUrlSplitGroup[2].Split('=')[1]);
                form.AddField("fileName", paddingArgUrlSplitGroup[3].Split('=')[1]);

/*
 *              Debug.Log(urlWithoutArg);
 *              foreach (string s in paddingArgUrlSplitGroup)
 *              {
 *                  Debug.Log(s);
 *              }
 */

                request = UnityWebRequest.Post(urlWithoutArg, form);

                requestType             = 1;
                onEndTexture           += eTexture;
                request.downloadHandler = new DownloadHandlerTexture();
                finalTimeOut            = timeOut * 12;
            }
            else if (eAssetBundle != null)
            {
                request           = UnityWebRequest.Get(url);
                requestType       = 2;
                onEndAssetBundle += eAssetBundle;
                //name包含了路径Cache
                request.downloadHandler = new DownloadHandlerAssetBundle("", paddingUrlSplitGroup[0], Hash128.Parse(paddingUrlSplitGroup[1]), uint.Parse(paddingUrlSplitGroup[2]));
                finalTimeOut            = timeOut * 360;
            }

            request.timeout = finalTimeOut;

            asyncOpertion = request.SendWebRequest();
//          asyncOpertion.allowSceneActivation = true;
        }