Unity C# 网络学习(十)——UnityWebRequest(一)

这篇具有很好参考价值的文章主要介绍了Unity C# 网络学习(十)——UnityWebRequest(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Unity C# 网络学习(十)——UnityWebRequest(一)

UnityWebRequest与WWW的区别文章来源地址https://www.toymoban.com/news/detail-401064.html

  • UnityWebRequest将各种资源进行了拆分
  • UnityWebRequest比WWW的效率更高,有很低的GC产生
  • 更方便的上传数据

一.UnityWebRequest类获取数据

1.下载文本和二进制数据

    private IEnumerator LoadText()
    {
        UnityWebRequest unityWebRequest = UnityWebRequest.Get("http://192.168.1.103:8080/Http_Server/zzs.txt");
        yield return unityWebRequest.SendWebRequest();
        if (unityWebRequest.result == UnityWebRequest.Result.Success)
        {
            string text = unityWebRequest.downloadHandler.text;
            byte[] bytes = unityWebRequest.downloadHandler.data;
            Debug.Log(text);
            Debug.Log(bytes.Length);
            Debug.Log("文本下载完成!");
        }
        else
        {
            Debug.Log("下载失败:" + unityWebRequest.result);
        }
    }

2.下载图片数据

    private IEnumerator LoadTexture()
    {
        UnityWebRequest unityWebRequest =
            UnityWebRequestTexture.GetTexture("http://192.168.1.103:8080/Http_Server/xxx.jpg");
        yield return unityWebRequest.SendWebRequest();
        if (unityWebRequest.result == UnityWebRequest.Result.Success)
        {
            //方式一
            Texture2D tex2D1 = (unityWebRequest.downloadHandler as DownloadHandlerTexture)?.texture;
            //方式二
            Texture2D tex2D2 = DownloadHandlerTexture.GetContent(unityWebRequest);
            image.texture = tex2D2;
            Debug.Log("图片下载完成!");
        }
        else
        {
            Debug.Log("下载失败:" + unityWebRequest.result);
        }
    }

3.下载AssetBundle数据

    private IEnumerator LoadAb()
    {
        UnityWebRequest unityWebRequest =
            UnityWebRequestAssetBundle.GetAssetBundle("http://192.168.1.103:8080/Http_Server/photo.ywj");
        unityWebRequest.SendWebRequest();
        while (!unityWebRequest.isDone)
        {
            Debug.Log(unityWebRequest.downloadProgress);
            Debug.Log(unityWebRequest.downloadedBytes);
            yield return null;
        }

        if (unityWebRequest.result == UnityWebRequest.Result.Success)
        {
            //方式一
            AssetBundle assetBundle1 = (unityWebRequest.downloadHandler as DownloadHandlerAssetBundle)?.assetBundle;
            //方式二
            AssetBundle assetBundle2 = DownloadHandlerAssetBundle.GetContent(unityWebRequest);

            if (assetBundle1 != null) Debug.Log(assetBundle1.name);
            if (assetBundle2 != null) Debug.Log(assetBundle2.name);
            Debug.Log("图片下载完成!");
        }
        else
        {
            Debug.Log("下载失败:" + unityWebRequest.result);
        }
    }

4.下载音频数据

    private IEnumerator LoadAudioClip()
    {
        UnityWebRequest unityWebRequest =
            UnityWebRequestMultimedia.GetAudioClip("http://192.168.1.103:8080/Http_Server/music.mp3", AudioType.MPEG);
        yield return unityWebRequest.SendWebRequest();
        if (unityWebRequest.result == UnityWebRequest.Result.Success)
        {
            AudioClip clip = DownloadHandlerAudioClip.GetContent(unityWebRequest);
            audioSource.clip = clip;
            audioSource.Play();
            Debug.Log("音频下载成功!");
        }
        else
        {
            Debug.Log("下载失败:"+unityWebRequest.result);
        }
    }

二.UnityWebRequest类上传数据

1.上传数据类MultipartFormDataSection

		//======MultipartFormDataSection======
        //1.二进制字节数组
        dataList.Add(new MultipartFormDataSection(Encoding.UTF8.GetBytes("zzs666")));
        //2.字符串
        dataList.Add(new MultipartFormDataSection("zzs666"));
        //3.参数名,参数值
        dataList.Add(new MultipartFormDataSection("Name","zzs"));
        dataList.Add(new MultipartFormDataSection("Msg",new byte[1024]));

2.上传数据类MultipartFormFileSection

        //======MultipartFormFileSection======
        //1.二进制字节数组
        dataList.Add(new MultipartFormFileSection(Encoding.UTF8.GetBytes("zzs666")));
        //2.文件名,字节数组(常用)
        dataList.Add(new MultipartFormFileSection("上传的文件.jpg",File.ReadAllBytes(Application.streamingAssetsPath +"/test.jpg")));
        //3.字符串数据,编码格式,文件名(常用)
        dataList.Add(new MultipartFormFileSection("zzs!zzs!zzs!",Encoding.UTF8, "zzsTest.txt"));

3.Post发送数据相关

    private IEnumerator UpLoad()
    {
        List<IMultipartFormSection> data = new List<IMultipartFormSection>
        {
            new MultipartFormDataSection("Name", "MrTang"),
            new MultipartFormFileSection("Unity上传的文件.jpg",
                File.ReadAllBytes(Application.streamingAssetsPath + "/test.jpg")),
            new MultipartFormFileSection("zzs!zzs!zzs!", Encoding.UTF8, "zzsTest.txt")
        };
        UnityWebRequest unityWebRequest = UnityWebRequest.Post("http://192.168.1.103:8080/Http_Server/", data);
        yield return unityWebRequest.SendWebRequest();

        if (unityWebRequest.result == UnityWebRequest.Result.Success)
        {
            Debug.Log("上传完成!");
        }
        else
        {
            Debug.Log("上传失败!" + unityWebRequest.result + unityWebRequest.error);
        }
    }

到了这里,关于Unity C# 网络学习(十)——UnityWebRequest(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • unity unityWebRequest 通过http下载服务器资源

    直接下载不显示进度 显示下载进度 //注册事件的方法 private void OnDownloadAssets()//下载资源 { GameController.Instance.StartCoroutine(DownloadFormServer_IE(url, savePath)); }

    2024年02月21日
    浏览(49)
  • Unity UnityWebRequest 向php后端上传图片文件

    之前测试功能写过一次,因为代码忘记保存,导致真正用到的时候怎么也想不起来当初怎么写的了,复现后还是写个文章记录一下,省的下次再忘记。 搞定。

    2024年01月23日
    浏览(54)
  • Unity UnityWebRequest使用http与web服务器通讯

    一、搭建客户端与服务器http通讯 1.在Nodejs中文官网Node.js 中文网 (nodejs.com.cn),下载并安装Nodejs  2.在项目文件夹下新建WebServer文件夹,打开CMD窗口,在WebServer文件夹路径下安装express    3.在WebServer文件夹中新建main.js文件,在main.js中编写服务端脚本  4.在CMD中运行main.js,打开

    2024年02月16日
    浏览(88)
  • unity 3d与服务器以及数据库进行数据交互!!!(UnityWebRequest)

    数字孪生最重要的一步便是数据的通信,这里的数据通信包含了,数字模型和物理模型之间的通信。而对于数字模型在前面的介绍(跳转前面介绍的),我们采用的是unity3d来完成的,当然这里介绍的数据交互,重要也是以unity3d来介绍,但是大致的思想和原理都是一样的。下

    2024年02月12日
    浏览(42)
  • Unity 启动时带参数,网页后端进行数据交互 UnityWebRequest ,Post,Get,Delete

    启动传参数可以参考这篇文章: 浏览器调用本地exe(应用程序)方法 Unity准备工作 需要用到这个API 官方解释:返回包含当前进程的命令行参数的字符串数组 返回值是一个string[],当Length1的时候就是带参数,注意:在UnityEditor模式也就是编辑器模式会有默认参数返回,Length是大于1的 常用

    2024年02月16日
    浏览(45)
  • Unity学习笔记--使用 C# 开发一个 LRU

    什么是 LRU 在计算机系统中,LRU(Least Recently Used,最近最少使用)是一种缓存置换算法。缓存是计算机系统中的一种能够高速获取数据的介质,而缓存置换算法则是在缓存空间不足时,需要淘汰掉部分缓存数据以腾出空间,使得后来需要访问数据能够有更多的缓存空间可用。

    2024年02月13日
    浏览(126)
  • Unity3d UnityWebRequest调用接口报错Curl error 60: Cert verify failed: UNITYTLS_X509VERIFY_FLAG_EXPIRED解决办法

    Unity3d使用UnityWebRequest组件调用https(类似https://xxx.com/apipath)接口数据,然后报错 Curl error 60: Cert verify failed: UNITYTLS_X509VERIFY_FLAG_EXPIRED 和 SSL CA certificate error : 大致的意思是证书验证失败 和 SSL CA证书错误。 尝试使用Postman进行测试,得到也是类似的错误: 和后台接口提供人员

    2024年02月01日
    浏览(51)
  • 【Unity】Socket网络通信(TCP) - 最基础的C#服务端通信流程

    我这里新建了一个C#控制台项目来写服务端代码。 下面是基于C# Socket的最基础服务端通信流程: 创建服务端Socket对象 绑定IP地址和端口 设置最大监听客户端数量 等待客户端连接 收发消息 释放连接 基于上面流程就能实现一个最简单并且能和客户端通信的服务器程序,每个步

    2023年04月16日
    浏览(64)
  • 1.Unity中c#代码学习(读取物体名称+位置+移动)

    Ctrl + K + C 批量注释 Ctrl + K + U 批量取消注释 Debug.Log(\\\"**\\\");输出“**”中内容 GameObject obj = this.gameObject; this表示当前指代的物品 GameObject表示游戏中物体 Debug.Log(\\\"** 物体名字:\\\" + this.gameObject.name); this.gameObject.name直接调用类名 string name = obj.name; string 是c#中的字符串类型 Debug.Log(\\\"**

    2023年04月11日
    浏览(49)
  • unity的C#学习——数组、字符串和结构体

    数组是一个存储相同类型元素的固定大小的顺序集合。数组是用来存储数据的集合,通常认为数组是一个同一类型变量的集合。 所有的数组都是由 连续的内存位置 组成的。最低的地址对应第一个元素,最高的地址对应最后一个元素。 声明数组变量并不是声明 number0、number

    2024年02月10日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包