【Unity网络编程知识】Unity的 WWW相关类学习

一、WWW类

1、WWW类的作用

        WWW是Unity提供的简单的访问网页的类,可以通过该类下载和上传一些数据,在使用http协议时,默认的请求类型是Get,如果想要Post上传,需要配合WWWFrom类使用

主要支持的协议

  • 1.http://和https://超文本传输协议
  • 2.ftp://文件传输协议(但仅限于匿名下载)
  • 3.file://本地文件传输协议,可以使用该协议异步加载本地文件(PC、IOS、Android都支持)

注意

  • 1.该类一般配合协同程序使用
  • 2.该类在较新unity版本中会提示过时,但是仍可以使用,新版本将其功能整合进了UnityWebRequest类

2、WWW类的常用方法

2.1 WWW() 构造函数,用于创建一个WWW请求

WWW www = new WWW("http://192.168.1.25:8000/HttpServer/http上传的文件.jpg");

 2.2 GetAudioClip() :从下载数据返回一个音效切片AudioClip对象

www.GetAudioClip();

2.3 LoadImageIntoTexture() :用下载数据中的图像来替换现有的一个Texture2D对象

        Texture2D tex = new Texture2D(100, 100);
        www.LoadImageIntoTexture(tex);

 2.4 LoadFromCacheOrDownload() :从缓存加载AB包对象,如果该包不在缓存则自动下载存储到缓存中,以便以后直接从本地缓存中加载

WWW.LoadFromCacheOrDownload("a", 1);

3、WWW类的常用变量

3.1 assetBundle:如果加载的数据是AB包,可以通过该变量直接获取加载结果

www.assetBundle;

3.2 bytes:以字节数组的形式获取加载到的内容

www.bytes

3.3 bytesDownloaded:过去已下载的字节数

www.bytesDownloaded

3.4 error:返回一个错误消息,如果下载期间出现错误,可以通过它获取错误信息

www.error != null

3.5 isDone:判断下载是否已经完成

www.isDone

3.6 progress:下载进度

www.progress

3.7 text:如果下载的数据是字符串,以字符串的形式返回内容

www.text

3.8 texture:如果下载的数据是图片,以Texture2D的形式返回加载结果

www.texture

4、利用www类来异步下载或加载文件

4.1 下载HTTP服务器上的内容

    StartCoroutine(DownLoadHttp());

    IEnumerator DownLoadHttp()
    {
        //1.创建WWW对象
        WWW www = new WWW("https://t7.baidu.com/it/u=2604797219,1573897854&fm=193&f=GIF");

        //2.就是等待加载结束
        //yield return www;
        while (!www.isDone)
        {
            print(www.bytesDownloaded);
            print(www.progress);
            yield return null;
        }

        print(www.bytesDownloaded);
        print(www.progress);

        //3.使用加载结束后的资源
        if (www.error == null)
        {
            //www.texture
            image.texture = www.texture;
        }
        else
        {
            Debug.LogError(www.error);
        }
    }

4.2 下载FTP服务器上的内容(FTP服务器一定要支持匿名账户)

    StartCoroutine(DownLoadFtp());

    IEnumerator DownLoadFtp()
    {
        //1.创建WWW对象
        WWW www = new WWW("ftp://127.0.0.1/计算机网络思维导图.png");

        //2.就是等待加载结束
        //yield return www;
        while (!www.isDone)
        {
            print(www.bytesDownloaded);
            print(www.progress);
            yield return null;
        }

        print(www.bytesDownloaded);
        print(www.progress);

        //3.使用加载结束后的资源
        if (www.error == null)
        {
            //www.texture
            image.texture = www.texture;
        }
        else
        {
            Debug.LogError(www.error);
        }
    }

4.3 本地内容加载(一般移动平台加载数据都会使用该方式)

    StartCoroutine(DownLoadLocal());

    IEnumerator DownLoadLocal()
    {
        //1.创建WWW对象
        WWW www = new WWW("file://" + Application.streamingAssetsPath + "/test.png");

        //2.就是等待加载结束
        //yield return www;
        while (!www.isDone)
        {
            print(www.bytesDownloaded);
            print(www.progress);
            yield return null;
        }

        print(www.bytesDownloaded);
        print(www.progress);

        //3.使用加载结束后的资源
        if (www.error == null)
        {
            //www.texture
            image.texture = www.texture;
        }
        else
        {
            Debug.LogError(www.error);
        }
    }

二、WWWForm类

1、WWWForm类的作用

  • 如果想要使用wwW上传数据时,就需要配合wwWFrom类进行使用了,而WWWFrom主要就是用于集成数据的,我们可以设置上传的参数或者2进制数据,当结合wwWFrom上传数据时,它主要用到的请求类型是Post,它使用Http协议进行上传处理

注意:

  • 使用WWW结合WWWFrom上传数据一般需要配合后端程序制定上传规则

2、WWWFrom类的常用方法和变量

2.1 WWWForm() :构造函数

WWWForm data = new WWWForm();

2.2 AddBinaryData() :添加二进制数据

data.AddBinaryData()

2.3 AddField() :添加字段

        data.AddField("Name", "MrTang", Encoding.UTF8);
        data.AddField("Age", 99);

3、WWW结合wwWForm对象来异步上传数据

    StartCoroutine(UploadData());

    IEnumerator UploadData()
    {
        WWWForm data = new WWWForm();
        data.AddField("Name", "MrTang", Encoding.UTF8);
        data.AddField("Age", 99);

        WWW www = new WWW("http://192.168.1.25:8000/HttpServer/", data);

        yield return www;

        if(www.error == null)
        {
            print("上传成功");
        }
        else
        {
            print("上传失败");
        }

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值