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

北京做网站哪个好奈曼旗华水建设工程公司网站

北京做网站哪个好,奈曼旗华水建设工程公司网站,软件开发一个月多少钱,网站设计案例公司文章目录 1 UnityWebRequest 介绍2 搭建 HTTP 服务器3 下载资源3.1 下载文本3.2 下载图片3.3 下载 AB 包 4 上传资源4.1 上传数据类4.2 POST 上传4.3 PUT 上传 1 UnityWebRequest 介绍 ​ UnityWebRequest 是 Unity 提供的模块化的系统类,用于构成 HTTP 请求和处理…

文章目录

  • 1 UnityWebRequest 介绍
  • 2 搭建 HTTP 服务器
  • 3 下载资源
    • 3.1 下载文本
    • 3.2 下载图片
    • 3.3 下载 AB 包
  • 4 上传资源
    • 4.1 上传数据类
    • 4.2 POST 上传
    • 4.3 PUT 上传

1 UnityWebRequest 介绍

​ UnityWebRequest 是 Unity 提供的模块化的系统类,用于构成 HTTP 请求和处理 HTTP 响应。

​ 它主要目标是让 Unity 游戏和 Web 服务端进行交互,将之前 WWW 的相关功能都集成在了其中,新版本中都建议使用 UnityWebRequest 类代替 WWW 类。

​ UnityWebRequest 在使用上和 WWW 很类似,主要区别是 UnityWebRequest 把下载下来的数据处理单独提取出来,可以根据自己的需求选择对应的数据处理对象来获取数据。

注意

  1. UnityWebRequest 和 WWW 一样,需要配合协同程序使用。
  2. UnityWebRequest 和 WWW 一样,支持 http、ftp、file 协议下载或加载资源。
  3. UnityWebRequest 能够上传文件到 HTTP 资源服务器。

常用操作

  1. 使用 Get 请求获取文本或二进制数据。
  2. 使用 Get 请求获取纹理数据。
  3. 使用 Get 请求获取 AB 包数据。
  4. 使用 Post 请求发送数据。
  5. 使用 Put 请求上传数据。

2 搭建 HTTP 服务器

  • 搭建 HTTP 服务器过程参考:2025-05-11 Unity 网络基础10——HTTP通信-CSDN博客。

​ Unity 默认不允许不安全的连接(如 HTTP),如果服务器是本地开发服务器,可以启用 Unity 的 Allow downloads over HTTP 选项(位于 Edit > Project Settings > Player > Other Settings)。

image-20250511112546176

3 下载资源

3.1 下载文本

  • 获取文本或二进制数据时

    使用 UnityWebRequest.Get()

using UnityEngine;namespace Lesson
{using System.Collections;using UnityEngine.Networking;public class Lesson30 : MonoBehaviour{// 在Start方法中启动LoadText协程private void Start(){StartCoroutine(LoadText());}// 定义LoadText协程IEnumerator LoadText(){// 发送GET请求var req = UnityWebRequest.Get("http://你的 IP 地址:8000/HTTP Server/test.txt");// 等待请求完成yield return req.SendWebRequest();// 如果请求成功if (req.result == UnityWebRequest.Result.Success){// 打印下载的文本print(req.downloadHandler.text);// 获取下载的字节数组var bytes = req.downloadHandler.data;// 打印字节数组的长度print("字节数组长度: " + bytes.Length);}// 如果请求失败else{// 打印错误信息print($"获取失败: {req.error} | {req.result} | {req.responseCode}");}}}
}

​ 将脚本挂载到 Unity 场景上并运行,得到以下结果。

image-20250511112629771

3.2 下载图片

  • 获取纹理图片数据时

    使用 UnityWebRequestTexture.GetTexture()

    以及 DownloadHandlerTexture.GetContent()

    该方法也支持

    • ftp 下载。
    • file 本地文件下载。
using UnityEngine;namespace Lesson
{using System.Collections;using UnityEngine.Networking;using UnityEngine.UI;public class Lesson30 : MonoBehaviour{// 声明一个RawImage类型的变量Imgpublic RawImage Img;// 在Start方法中启动LoadText协程private void Start(){StartCoroutine(LoadTexture());}IEnumerator LoadTexture(){// 创建一个UnityWebRequestTexture对象,用于获取指定URL的纹理var req = UnityWebRequestTexture.GetTexture("http://你的 IP 地址:8000/HTTP Server/test.png");// var req = UnityWebRequestTexture.GetTexture("ftp://你的 IP 地址:8000/HTTP Server/test.png");// var req = UnityWebRequestTexture.GetTexture("file://" + Application.streamingAssetsPath + "/test.png");// 发送网络请求yield return req.SendWebRequest();// 如果请求成功if (req.result == UnityWebRequest.Result.Success){// 方法一// Img.texture = (req.downloadHandler as DownloadHandlerTexture).texture;// 方法二// 获取下载的纹理Img.texture = DownloadHandlerTexture.GetContent(req);}else{// 打印错误信息print($"获取失败: {req.error} | {req.result} | {req.responseCode}");}}}
}

​ 将脚本挂载到 Unity 场景上,并在 Unity 场景中创建一个 RawImage 关联至 Img。

​ 运行 Unity,RawImage 上出现了从服务器下载的图片。

image-20250511114140792

3.3 下载 AB 包

  • 获取 AB 包数据时

    使用 UnityWebRequestAssetBundle.GetAssetBundle()

    以及 DownloadHandlerAssetBundle.GetContent()

using UnityEngine;namespace Lesson
{using System.Collections;using UnityEngine.Networking;using UnityEngine.UI;public class Lesson30 : MonoBehaviour{// 在Start方法中启动LoadText协程private void Start(){StartCoroutine(LoadAB());}IEnumerator LoadAB(){// 创建一个UnityWebRequest对象,用于获取AssetBundleUnityWebRequest req = UnityWebRequestAssetBundle.GetAssetBundle("http://你的 IP 地址:8000/HTTP Server/ab2");// 发送请求req.SendWebRequest();// 循环等待请求完成while (!req.isDone){// 打印下载进度print(req.downloadProgress);// 打印已下载的字节数print(req.downloadedBytes);// 等待一帧yield return null;}//yield return req.SendWebRequest();// 打印下载进度print(req.downloadProgress);// 打印已下载的字节数print(req.downloadedBytes);// 如果请求成功if (req.result == UnityWebRequest.Result.Success){// 获取AssetBundle对象// AssetBundle ab = (req.downloadHandler as DownloadHandlerAssetBundle).assetBundle;// 获取AssetBundle对象var ab = DownloadHandlerAssetBundle.GetContent(req);// 打印AssetBundle的名称print(ab.name);}else{// 打印错误信息print($"获取失败: {req.error} | {req.result} | {req.responseCode}");}}}
}

4 上传资源

4.1 上传数据类

父接口:IMultipartFormSection

  • 所有上传数据类的父接口
  • 可以使用父类容器存储子类对象
var dataList = new List<IMultipartFormSection>();

子类1:MultipartFormDataSection

  • 用于上传普通数据
// 1. 二进制字节数组
dataList.Add(new MultipartFormDataSection(Encoding.UTF8.GetBytes("123123123123123")));// 2. 字符串
dataList.Add(new MultipartFormDataSection("12312312312312312dsfasdf"));// 3. 带参数名和编码类型(常用)
dataList.Add(new MultipartFormDataSection("Name", "xxx", Encoding.UTF8, "application/...."));// 4. 带参数名的字节数组
dataList.Add(new MultipartFormDataSection("Msg", new byte[1024], "appl....."));

子类2:MultipartFormFileSection

  • 用于上传文件数据
// 1. 简单字节数组
dataList.Add(new MultipartFormFileSection(File.ReadAllBytes(Application.streamingAssetsPath + "/test.png")));// 2. 带文件名的字节数组(常用)
dataList.Add(new MultipartFormFileSection("上传的文件.png", File.ReadAllBytes(Application.streamingAssetsPath + "/test.png")));// 3. 字符串数据+文件名(常用)
dataList.Add(new MultipartFormFileSection("12312313212312", "test.txt"));// 4. 带编码格式的字符串数据+文件名(常用)
dataList.Add(new MultipartFormFileSection("12312313212312", Encoding.UTF8, "test.txt"));// 5. 完整参数:表单名+字节数组+文件名+文件类型
dataList.Add(new MultipartFormFileSection("file", new byte[1024], "test.txt", ""));// 6. 完整参数:表单名+字符串数据+编码格式+文件名
dataList.Add(new MultipartFormFileSection("file", "123123123", Encoding.UTF8, "test.txt"));

4.2 POST 上传

基本流程

  1. 准备上传数据列表。
  2. 创建 UnityWebRequest.POST 请求。
  3. 发送请求并监控进度。
  4. 处理响应结果。
using UnityEngine;namespace Lesson
{using System;using System.Collections;using System.Collections.Generic;using System.IO;using UnityEngine.Networking;using UnityEngine.UI;public class Lesson31 : MonoBehaviour{// 在Start方法中启动LoadText协程private void Start(){StartCoroutine(Upload());}IEnumerator Upload(){// 创建一个包含要上传的数据的列表var data = new List<IMultipartFormSection>{// 添加一个名为Name的表单字段,值为xxxnew MultipartFormDataSection("Name", "xxx"),// 添加一个名为png的文件字段,值为test.png文件的内容new MultipartFormFileSection("png", File.ReadAllBytes(Application.streamingAssetsPath + "/test.png")),// 添加一个名为txt的文本字段,值为12312321231232123new MultipartFormFileSection("txt", "12312321231232123"),};// 创建一个POST请求,将数据发送到指定的URLvar req = UnityWebRequest.Post("http://你的 IP 地址:8000/HTTP Server/", data);// 发送请求req.SendWebRequest();// 循环等待请求完成while (!req.isDone){// 打印上传进度print(req.uploadProgress);// 打印已上传的字节数print(req.uploadedBytes);// 等待一帧yield return null;}// 打印上传进度print(req.uploadProgress);// 打印已上传的字节数print(req.uploadedBytes);// 如果请求成功if (req.result == UnityWebRequest.Result.Success){// 打印上传成功print("上传成功");// req.downloadHandler.data}else{// 打印获取失败的信息print($"获取失败: {req.error} | {req.result} | {req.responseCode}");}}}
}

​ 将脚本挂载到 Unity 场景上并运行,得到以下结果。

image-20250511121305306

​ 在服务器文件夹中,可看到上传了 2 个文件(注意要确认可以匿名访问服务器,才可上传成功)。

image-20250511121803853

4.3 PUT 上传

  • 不是所有服务器都支持 PUT 方法。
  • 需要服务器端明确支持 PUT 请求处理。
IEnumerator UploadPut()
{var req = UnityWebRequest.Put("http://你的 IP 地址:8000/HTTP Server/", File.ReadAllBytes(Application.streamingAssetsPath + "/test.png"));yield return req.SendWebRequest();if (req.result == UnityWebRequest.Result.Success){print("Put 上传成功");}else{ }
}

文章转载自:

http://0bklhCy2.Lxhrq.cn
http://w164FpIe.Lxhrq.cn
http://YqCArtV9.Lxhrq.cn
http://YwKsmfdL.Lxhrq.cn
http://SaV2gyNC.Lxhrq.cn
http://5ItOrtC3.Lxhrq.cn
http://g8xk2Nck.Lxhrq.cn
http://nYjx6nqj.Lxhrq.cn
http://2hKTO2mr.Lxhrq.cn
http://8Z7dQR42.Lxhrq.cn
http://5iyjliCv.Lxhrq.cn
http://pOrspsYk.Lxhrq.cn
http://quo7hNzZ.Lxhrq.cn
http://KJuUFuQN.Lxhrq.cn
http://tNGMcFfc.Lxhrq.cn
http://W0zgbyx5.Lxhrq.cn
http://GGo7AstE.Lxhrq.cn
http://xZ8qMiJ4.Lxhrq.cn
http://YBW4Vcfo.Lxhrq.cn
http://Nof2gMHi.Lxhrq.cn
http://IBZXaSxU.Lxhrq.cn
http://oAxopRXM.Lxhrq.cn
http://8ZA1kIQ5.Lxhrq.cn
http://rIL84Iw0.Lxhrq.cn
http://pJdQAKzf.Lxhrq.cn
http://6A4vdpfz.Lxhrq.cn
http://uuheMk5g.Lxhrq.cn
http://oQpVRou9.Lxhrq.cn
http://RIuhmDBW.Lxhrq.cn
http://ltsX8PXG.Lxhrq.cn
http://www.dtcms.com/wzjs/656552.html

相关文章:

  • 门户网站建设公司流程网站后台管理系统安装
  • 潍坊青州网站建设游戏推广合作
  • 大朗镇网站仿做黑龙江哈尔滨网站建设
  • 男女做暖暖不要钱的试看网站公司网站建设合同交印花税吗
  • 自己做免费网站的视频html5手机网站
  • 网站设计规划书怎么写企业网站建设合同
  • 廊坊专业网站建设永久免费低代码开发平台
  • 服装购物网站排名网页设计培训学些什么
  • 为什么要做个人网站偃师制作网站
  • 兰州网站外包qq群推广网站免费
  • 建设市民中心网站网站服务器及运营维护公告
  • 网站建设外包注意什么怎么做不用数据库的网站
  • 网站策划的知识建立企业官方网站
  • 网站建设添加视频教程软件app开发公司哪个好
  • 盘锦网站建设制作网站集约化建设建议
  • 黄岩地区做环评立项在哪个网站平板电脑可以做网站不
  • 国内免费网站空间社区网站建设平台
  • 南通网站推广做国外网站的公证要多少钱
  • 经典企业网站北京网站建设手机app电子商务
  • 照片视频制作网站小程序平台介绍怎么写
  • 东莞创意网站设计中国南昌企业网站制作
  • 360网站怎么建设wordpress如何自己编辑
  • 电脑记事本做网站彩票网站开发教程
  • 产品网站开发服务洛阳网站建设优化案例
  • 公司的论坛与网站绑定婚纱摄影网站管理系统
  • 视频网站建设技术方案书wordpress主题对比
  • 织梦网站被做跳转西安网站建设公司平台
  • 九江专业的企业网站建设公司服务器 wordpress 邮件
  • 网站建设优化服务咨询服装企业的网站建设
  • 平面设计比较好的网站iis7 wordpress伪静态规则