IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity UnityWebRequest使用方法 -> 正文阅读

[游戏开发]Unity UnityWebRequest使用方法

简介

UnityWebRequest 提供了一个模块化系统,用于构成 HTTP 请求和处理 HTTP 响应。

结构

  • UploadHandler: 处理数据到服务器的传输
  • DownloadHandler: 处理从服务器接收的数据的接收、缓冲和后处理
  • UnityWebRequest: 管理上面两个对象

详情

一、和WWW的区别

WWW和UnityWebRequest都用于处理Http请求,UnityWebRequest是后面出的用于替代WWW的模块。相比于WWW,UnityWebRequest支持设置timeout超时时间,支持断点续传,在一些复杂操作上也有更好的表现。

二、构造方法

  • public UnityWebRequest()
  • public UnityWebRequest(string url)
  • public UnityWebRequest(Uri uri)
  • public UnityWebRequest(string url, string method)
  • public UnityWebRequest(Uri uri, string method)
  • public UnityWebRequest(string url,string method,DownloadHandler downloadHandler,UploadHandler uploadHandler)
  • public UnityWebRequest(Uri uri,string method,DownloadHandler downloadHandler,UploadHandler uploadHandler)

三、封装的构造方法

  • UnityWebRequest.Get(string uri)
  • UnityWebRequest.Post(string uri, WWWForm formData)
  • UnityWebRequest.Delete(string uri)
  • UnityWebRequest.Head(string uri)
  • UnityWebRequest.Put(string uri, string bodyData)

上面这些方法是对构造方法的封装,上面列举的方法,它们自己还有其他的重载方法。
比如Get()还有UnityWebRequest.Get(Uri uri)重载方法,不过主要是这5个构造类型。
推荐使用这些封装的方法来构造。

四、使用举例

Get()

    private IEnumerator Get()
    {
        var request = UnityWebRequest.Get("http://www.baidu.com");
        yield return request.SendWebRequest();
        if (request.isHttpError || request.isNetworkError)
        {
            Debug.LogError(request.error);
        }
        else
        {
            Debug.Log(request.downloadHandler.text);
        }
    }

Post()

    private IEnumerator Post()
    {
    	//这里使用WWWForm来构建键值对。和WWW的使用是一致的
        WWWForm form = new WWWForm();
        form.AddField("key","value");
        UnityWebRequest webRequest = UnityWebRequest.Post("http://www.baidu.com",form);
        
        yield return webRequest.SendWebRequest();
        
        if (webRequest.isHttpError || webRequest.isNetworkError)
        {
            Debug.LogError(webRequest.error);
        }
        else
        {
            Debug.Log(webRequest.downloadHandler.text);
        }
    }

读取过程中显示进度

显示进度要换种写法,如下

    private IEnumerator GetShowProgress()
    {
        UnityWebRequest request = UnityWebRequest.Get("www.baidu.com");
        request.SendWebRequest();
        while (!request.isDone)
        {
            Debug.Log($"{GetType()} progress:{request.downloadProgress}");
            yield return null;
        }
		
		Debug.Log($"{GetType()} progress:{request.downloadProgress}");

        if (request.isNetworkError || request.isHttpError)
        {
            Debug.LogError($"{GetType()} error:{request.error}");
        }
        else
        {
            Debug.Log($"{GetType()} text:{request.downloadHandler.text}");
            Debug.Log($"{GetType()} bytes.length:{request.downloadHandler.data.Length}");
        }
    }
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-12-16 18:01:25  更:2021-12-16 18:02:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 20:28:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码