版本:Unity 6 (6000.0)
语言:英语
跨帧拆分任务
常见操作:使用 HLAPI

与 Web 服务器交互

UnityWebRequest 提供了一个模块化系统来构建 HTTP 请求并处理 HTTP 响应。UnityWebRequest 系统的主要目标是让 Unity 游戏与 Web 浏览器后端进行交互。它还支持高需求功能,例如分块 HTTP 请求、流式 POST/PUT 操作以及对 HTTP 标头和动词的完全控制。

该系统由两层组成

  • 一个 高级 API (HLAPI) 封装了低级 API,并为执行常见操作提供了便捷的接口
  • 一个 低级 API (LLAPI) 为更高级的用户提供了最大灵活性

支持的平台

UnityWebRequest 系统支持大多数 Unity 平台

  • 所有版本的编辑器和独立运行的玩家
  • 网页
  • 移动平台:iOS、Android
  • 通用 Windows 平台

架构

UnityWebRequest 生态系统将 HTTP 事务分解为三个不同的操作

  • 向服务器提供数据
  • 从服务器接收数据
  • HTTP 流量控制(例如,重定向和错误处理)

为了为高级用户提供更好的接口,这些操作分别由各自的对象控制

  • 一个 UploadHandler 对象负责向服务器传输数据
  • 一个 DownloadHandler 对象负责接收、缓冲和后处理从服务器接收的数据
  • 一个 UnityWebRequest 对象管理另外两个对象,并处理 HTTP 流量控制。此对象是定义自定义标头和 URL 的地方,也是存储错误和重定向信息的所在。

对于任何 HTTP 事务,正常的代码流程是

  • 创建一个 Web 请求对象
  • 配置 Web 请求对象
    • 设置自定义标头
    • 设置 HTTP 动词(例如 GET、POST、HEAD - 除 Android 外的所有平台都允许使用自定义动词)
    • 设置 URL
  • (可选)创建一个 Upload Handler 并将其附加到 Web 请求
    • 提供要上传的数据
    • 提供要上传的 HTTP 表单
  • (可选)创建一个 Download Handler 并将其附加到 Web 请求
  • 发送 Web 请求
    • 如果在协程中,你可以 Yield Send() 调用的结果以等待请求完成
  • (可选)从 Download Handler 读取接收到的数据
  • (可选)从 UnityWebRequest 对象读取错误信息、HTTP 状态码和响应标头
跨帧拆分任务
常见操作:使用 HLAPI