Unity3D 封装WWW

来源:互联网 发布:pc数据恢复软件下载 编辑:程序博客网 时间:2024/06/05 19:19
using System.Collections;using System.Collections.Generic;using UnityEngine;public class WWWTest {    /// <summary>    /// 下载路径    /// </summary>    private string url;    public string URL    {        set        {            url = value;        }        get        {            return url;         }    }    /// <summary>    /// 开始下载    /// </summary>    public virtual void BeginDownLoad()    {    }    /// <summary>    /// 下载结束    /// </summary>    public virtual void FinishDownLoad(WWW tepWWW)    {    }    /// <summary>    /// 下载出错    /// </summary>    public virtual void ErrorDownLoad()    {    }    /// <summary>    /// 下载协程    /// </summary>    /// <returns></returns>    public IEnumerator DownLoad()    {        BeginDownLoad();        WWW www = new WWW(URL);        yield return www;        if (string.IsNullOrEmpty(www.error))        {            //下载成功            FinishDownLoad(www);        }        else        {            //下载失败            ErrorDownLoad();        }    }}
using System.Collections;using System.Collections.Generic;using UnityEngine;public class WWWDownLoad : WWWTest {    /// <summary>    /// 构造方法    /// </summary>    /// <param name="url"></param>    public WWWDownLoad(string url)    {        Init(url);    }    /// <summary>    /// 丰富URL    /// </summary>    /// <param name="url"></param>    public void Init(string url)    {        if (Application.platform == RuntimePlatform.Android)        {            this.URL = "jar:file://" + url;        }        else if (Application.platform == RuntimePlatform.WindowsEditor || Application.platform == RuntimePlatform.WindowsPlayer)        {            this.URL = "file:///" + url;        }        else        {            this.URL = "file://" + url;        }    }    public override void FinishDownLoad(WWW tepWWW)    {        Debug.Log(tepWWW.text);    }}
using System.Collections;using System.Collections.Generic;using UnityEngine;public class DownLoading : MonoBehaviour {    public static DownLoading Instance;    /// <summary>    /// 下载队列    /// </summary>    Queue<WWWTest> DownLoadQueue;    /// <summary>    /// 是否下载完成    /// </summary>    private bool IsFinish;    private void Awake()    {        Instance = this;    }    void Start () {        DownLoadQueue = new Queue<WWWTest>();        IsFinish = true;       }    /// <summary>    /// 添加下载任务到下载队列中    /// </summary>    public void AddDownLoad(WWWTest test)    {        DownLoadQueue.Enqueue(test);        //如果下载完成 开启下载协程        if (IsFinish)        {            IsFinish = false;            StartCoroutine(DownLoad());        }    }    public IEnumerator DownLoad()    {        while(DownLoadQueue.Count > 0)        {            WWWTest test = DownLoadQueue.Dequeue();            yield return test.DownLoad();        }        IsFinish = true;    }    void Update () {        //调用        if (Input.GetKeyDown(KeyCode.A))        {            string url = Application.dataPath + "/WWW/WWWTest.cs";            WWWDownLoad download1 = new WWWDownLoad(url);            AddDownLoad(download1);            Debug.Log(123);        }    }}
原创粉丝点击