当前位置: 首页 > news >正文

【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.textureimage.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.textureimage.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.textureimage.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("上传失败");}}

相关文章:

  • 基础深度补全模型DepthLab: From Partial to Complete
  • Python训练第三十天
  • mybtais plus使用拦截器打印完整SQL语句
  • 深入探讨死区生成:原理、实现与应用
  • MIMO 检测(6)--最大似然检测(1)
  • 基于SpringBoot的小型民营加油站管理系统
  • 2025年—ComfyUI_关于ComfyUI的零碎小知识
  • unity UGUI虚线框shader
  • C++--综合应用-演讲比赛项目
  • 10、底层注解-@Conditional条件装配
  • python可视化:公积金与商业贷款利率历年趋势1
  • 客户体验数据使用的三种视角——旅程视角
  • 升级mysql (rpm安装)
  • 【java第14集】java访问修饰符详解
  • HashMap 的特点及应用场景
  • 洛谷B3876—— [信息与未来 2015] 中间值
  • Java知识点-Stream流
  • UE5在Blueprint中判断不同平台
  • MySQL如何快速删除数据库中所有表数据
  • PyMOL结构对齐方式
  • 河北省纪委原副书记、省监委原副主任陈玉祥一审获刑十二年
  • 搜狐一季度营收1.36亿美元,净亏损同比收窄超两成
  • 以色列媒体:以总理称将接管整个加沙
  • 对话作家吉井忍:“滚石”般的生活,让我看到多种人生可能
  • 4年间职务侵占、受贿逾亿元,北京高院:严惩民企内部腐败
  • 左手免费午餐右手花开岭,邓飞14年公益之路的中国贡献