原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/youxikaifa/2018/1010/58.html
         
	WWW类主要用于从网上下载资源,或从本地引用资源,本篇文章我们就来看看如何封装WWW类,
	 
直接上代码:
	
		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);
		
			        }
		
			    }
		
			}
	 
 
上篇:上一篇:
Unity3D粒子系统被2D的NGUI或者UGUI遮挡的问题 
下篇:下一篇:
Untiy3D使用PlayerPrefs类实现本地数据加密