UnityWebRequest_ZT
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.Networking;
- public class C_UnityWebRequest : MonoBehaviour
- {
- static C_UnityWebRequest instance;
- public static C_UnityWebRequest Instance
- {
- get
- {
- if (instance == null)
- {
- GameObject mounter = new GameObject("C_UnityWebRequest");
- instance = mounter.AddComponent<C_UnityWebRequest>();
- }
- return instance;
- }
- }
- /// <summary>
- /// get请求
- /// </summary>
- /// <param name="url"></param>
- /// <param name="actionResult"></param>
- public void Get(string url, Action<UnityWebRequest> actionResult)
- {
- StartCoroutine(_Get(url, actionResult));
- }
- /// <summary>
- /// 下载文件
- /// </summary>
- /// <param name="url"></param>
- /// <param name="downloadFilePathAndName"></param>
- /// <param name="actionResult"></param>
- public void DownloadFile(string url, string downloadFilePathAndName, Action<UnityWebRequest> actionResult)
- {
- StartCoroutine(_DownloadFile(url, downloadFilePathAndName, actionResult));
- }
- /// <summary>
- /// 请求图片
- /// </summary>
- /// <param name="url"></param>
- /// <param name="actionResult"></param>
- public void GetTexture(string url, Action<Texture2D> actionResult)
- {
- StartCoroutine(_GetTexture(url, actionResult));
- }
- /// <summary>
- /// 请求assetBuddle
- /// </summary>
- /// <param name="url"></param>
- /// <param name="actionResult"></param>
- public void GetAssetBundle(string url, Action<AssetBundle> actionResult)
- {
- StartCoroutine(_GetAssetBundle(url, actionResult));
- }
- /// <summary>
- /// 下载音效
- /// </summary>
- /// <param name="url"></param>
- /// <param name="actionResult"></param>
- /// <param name="audioType"></param>
- public void GetAudioClip(string url, Action<AudioClip> actionResult, AudioType audioType = AudioType.WAV)
- {
- StartCoroutine(_GetAudioClip(url, actionResult, audioType));
- }
- /// <summary>
- /// post form
- /// </summary>
- /// <param name="serverURL"></param>
- /// <param name="lstformData"></param>
- /// <param name="actionResult"></param>
- public void Post(string serverURL, List<IMultipartFormSection> lstformData, Action<UnityWebRequest> actionResult)
- {
- //List<IMultipartFormSection> formData = new List<IMultipartFormSection>();
- //formData.Add(new MultipartFormDataSection("field1=foo&field2=bar"));
- //formData.Add(new MultipartFormFileSection("my file data", "myfile.txt"));
- StartCoroutine(_Post(serverURL, lstformData, actionResult));
- }
- /// <summary>
- /// put方法
- /// </summary>
- /// <param name="url"></param>
- /// <param name="contentBytes"></param>
- /// <param name="actionResult"></param>
- public void UploadByPut(string url, byte[] contentBytes, Action<bool> actionResult)
- {
- StartCoroutine(_UploadByPut(url, contentBytes, actionResult, ""));
- }
- /// <summary>
- /// get
- /// </summary>
- /// <param name="url"></param>
- /// <param name="actionResult"></param>
- /// <returns></returns>
- IEnumerator _Get(string url, Action<UnityWebRequest> actionResult)
- {
- using (UnityWebRequest uwr = UnityWebRequest.Get(url))
- {
- yield return uwr.SendWebRequest();
- if (actionResult != null)
- {
- actionResult(uwr);
- }
- }
- }
- /// <summary>
- /// 下载文件
- /// </summary>
- /// <param name="url"></param>
- /// <param name="downloadFilePathAndName"></param>
- /// <param name="actionResult"></param>
- /// <returns></returns>
- IEnumerator _DownloadFile(string url, string downloadFilePathAndName, Action<UnityWebRequest> actionResult)
- {
- var uwr = new UnityWebRequest(url, UnityWebRequest.kHttpVerbGET);
- uwr.downloadHandler = new DownloadHandlerFile(downloadFilePathAndName);
- yield return uwr.SendWebRequest();
- if (actionResult != null)
- {
- actionResult(uwr);
- }
- }
- /// <summary>
- /// 下载图片
- /// </summary>
- /// <param name="url"></param>
- /// <param name="actionResult"></param>
- /// <returns></returns>
- IEnumerator _GetTexture(string url, Action<Texture2D> actionResult)
- {
- UnityWebRequest uwr = new UnityWebRequest(url);
- DownloadHandlerTexture downloadTexture = new DownloadHandlerTexture(true);
- uwr.downloadHandler = downloadTexture;
- yield return uwr.SendWebRequest();
- Texture2D t = null;
- if (!(uwr.isNetworkError || uwr.isHttpError))
- {
- t = downloadTexture.texture;
- }
- if (actionResult != null)
- {
- actionResult(t);
- }
- }
- /// <summary>
- /// 下载AssetBuddle
- /// </summary>
- /// <param name="url"></param>
- /// <param name="actionResult"></param>
- /// <returns></returns>
- IEnumerator _GetAssetBundle(string url, Action<AssetBundle> actionResult)
- {
- UnityWebRequest www = new UnityWebRequest(url);
- DownloadHandlerAssetBundle handler = new DownloadHandlerAssetBundle(www.url, uint.MaxValue);
- www.downloadHandler = handler;
- yield return www.SendWebRequest();
- AssetBundle bundle = null;
- if (!(www.isNetworkError || www.isHttpError))
- {
- bundle = handler.assetBundle;
- }
- if (actionResult != null)
- {
- actionResult(bundle);
- }
- }
- /// <summary>
- /// 下载音效
- /// </summary>
- /// <param name="url"></param>
- /// <param name="actionResult"></param>
- /// <param name="audioType"></param>
- /// <returns></returns>
- IEnumerator _GetAudioClip(string url, Action<AudioClip> actionResult, AudioType audioType = AudioType.WAV)
- {
- using (var uwr = UnityWebRequestMultimedia.GetAudioClip(url, audioType))
- {
- yield return uwr.SendWebRequest();
- if (!(uwr.isNetworkError || uwr.isHttpError))
- {
- if (actionResult != null)
- {
- actionResult(DownloadHandlerAudioClip.GetContent(uwr));
- }
- }
- }
- }
- /// <summary>
- /// 表单下载
- /// </summary>
- /// <param name="serverURL"></param>
- /// <param name="lstformData"></param>
- /// <param name="actionResult"></param>
- /// <returns></returns>
- IEnumerator _Post(string serverURL, List<IMultipartFormSection> lstformData, Action<UnityWebRequest> actionResult)
- {
- //List<IMultipartFormSection> formData = new List<IMultipartFormSection>();
- //formData.Add(new MultipartFormDataSection("field1=foo&field2=bar"));
- //formData.Add(new MultipartFormFileSection("my file data", "myfile.txt"));
- UnityWebRequest uwr = UnityWebRequest.Post(serverURL, lstformData);
- yield return uwr.SendWebRequest();
- if (actionResult != null)
- {
- actionResult(uwr);
- }
- }
- /// <summary>
- /// put
- /// </summary>
- /// <param name="url"></param>
- /// <param name="contentBytes"></param>
- /// <param name="actionResult"></param>
- /// <param name="contentType"></param>
- /// <returns></returns>
- IEnumerator _UploadByPut(string url, byte[] contentBytes, Action<bool> actionResult, string contentType = "application/octet-stream")
- {
- UnityWebRequest uwr = new UnityWebRequest();
- UploadHandler uploader = new UploadHandlerRaw(contentBytes);
- // Sends header: "Content-Type: custom/content-type";
- uploader.contentType = contentType;
- uwr.uploadHandler = uploader;
- yield return uwr.SendWebRequest();
- bool res = true;
- if (uwr.isNetworkError || uwr.isHttpError)
- {
- res = false;
- }
- if (actionResult != null)
- {
- actionResult(res);
- }
- }
- }
ZT:https://www.jianshu.com/p/3da9191f82a0
UnityWebRequest_ZT的更多相关文章
随机推荐
- The type java.lang.AutoCloseable cannot be resolved. It is indirectly referenced from required .class files
出现问题: The type java.lang.AutoCloseable cannot be resolved. It is indirectly referenced from required ...
- shell脚本一键部署lvs+keepalived
环境 两个调度器dr1.dr2,两台真实机rs1.rs2.两台真实机安装httpd,并编辑主页内容用于验证 vip="192.168.132.250"dr1="192.1 ...
- 如何快速转载CSDN中的博客
看到一篇<如何快速转载CSDN中的博客>,介绍通过检查元素→复制html来实现快速转载博客的方法.不过,不知道是我没有领会其精神还是其他原因,测试结果为失败.
- 数据结构与算法(C/C++版)【数组】
第五章<数组> 一.概念 根据数组中存储的数据元素之间的逻辑关系,可以将数组分为 : 一维数组.二维数组.….n维数组.n维数组中,维数 n 的判断依据是:根据数组中为确定元素所在位置使用 ...
- Maven报错: Could not resolve archetype org.apache.maven.archetypes:maven-archetype-webapp
郁闷了两天,创建maven项目时,eclipse报错:Could not resolve artifact org.apache.maven.archetypes:maven-archetype-we ...
- java实现图片验证码
一.验证码生成类 package hbi.tech.utils; import javax.imageio.ImageIO; import java.awt.*; import java.awt.im ...
- ELK系列(一):安装(elasticsearch + logstash + kibana)
因为公司使用ELK的缘故,这两天尝试在阿里云上安装了下ELK,这里做个笔记,有兴趣的同学可以看下. 先大致介绍下ELK,ELK是三个组件的缩写,分别是elasticsearch.logstash.ki ...
- TreeMap剖析
TreeMap实现有序要么就是外界传递进来Comparator对象,要么就使用默认key的Comparable接口(实现自然排序) 最后我就来总结一下TreeMap要点吧: 由于底层是红黑树,那么时间 ...
- 由std::once_call 引发的单例模式的再次总结,基于C++11
一个偶然的机会,知道了std::once_call这个东西. 了解了下,std::once_call支持多线程情况下的某函数只执行一次.咦,这个不是恰好符合单例模式的多线程安全的困境吗? 单例模式,经 ...
- 【主动学习】Variational Adversarial Active Learning
本文记录了博主阅读ICCV2019一篇关于主动学习论文的笔记,第一篇博客,以后持续更新哈哈 论文题目:<Variational AdVersarial Active Learning> 原 ...