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的更多相关文章
随机推荐
- Jupyter Notebook安装和使用详情(你不懂我......)
一.Jupyter Notebook是什么? 1.notebook jupyter 简介 Jupyter Notebook是一个开源Web应用程序,允许您创建和共享包含实时代码,方程式,可视化效果和叙 ...
- .NetCore技术研究-一套代码同时支持.NET Framework和.NET Core
在.NET Core的迁移过程中,我们将原有的.NET Framework代码迁移到.NET Core.如果线上只有一个小型的应用还好,迁移升级完成后,只需要维护.NET Core这个版本的代码. 但 ...
- Spring MVC-从零开始-未完待续
Spring MVC 之 json格式的输入和输出 Spring定时器简单使用 Spring mvc 拦截器的简单使用 Spring MVC文件上传
- springmvc(三)
Spring MVC上传 Spring MVC为文件上传提供了直接的支持,这种支持是用即插即用的MultipartResolver实现的.SpringMVC使用Apache Commons FileU ...
- 如何搭建基于Docker的gitlab服务器集成CI/CD实现DEVOPS(完整版)
From this lesson you will learn about 1,How to install and configure a docker based gitlab server 2, ...
- eShopOnContainers学习系列(二):数据库连接健康检查
项目里使用数据库的时候,我们有时候需要知道数据库当前的健康状态,特别是当数据库连接不上的时候能够立马获悉.eShopOnContainers里存在着大量的服务健康.连接健康的检查,数据库连接是其中之一 ...
- 自己动手实现智能家居之温湿度数据采集存储(DHT11,MySql)
[前言] 一个热爱技术的人一定向往有一个科技感十足的环境吧,那何不亲自实践一下属于技术人的座右铭:"技术改变世界". 就让我们一步步动手搭建一个属于自己的"智能家居平台& ...
- aircrack-ng wifi密码破解
wifi密码破解 步骤1:查看网卡信息 ifconfig 找到你要用到的网卡 步骤2:启动网卡监听模式 airmon-ng start wlan0 我的是wlp2s0 步骤三:查看网卡变化 wlan0 ...
- 【maven的使用】1maven的概念与配置
maven是一个基于java平台的自动化构建工具.构建工具的发展由make->ant->maven->gradle其中gradle还在发展中,使用较少,学习难度比较大,所以目前占据主 ...
- Android NDK(一) ndk-build构建工具进行NDK开发
本文目录 一.androidstudio环境 二.快捷键配置 三.新建项目 四.NDK开发 五.so文件编译 一. androidstudio的环境 在SDK Tools中安装NDK开发环境(File ...