首页 > Unity协程截图,WWWForm、WWW配合上传

Unity协程截图,WWWForm、WWW配合上传

先说一下原理。。

截图有两种方法,第一种:

Application.CaptureScreenshot(url);

 

这个API可以截全屏并保存到指定路径

这里我们不采用此方法

 

下面的代码采用第二种方法,自己建一个Texture2D

这种方法灵活,操作性更高

 

WWWForm方法是用来提交到数据库的

WWWForm wwwForm = new WWWForm();wwwForm.AddField(“Username”,name);wwwForm.AddField(“ID”,id);

WWW方法可以用来上传和下载

//上传
WWW www = new WWW(url,wwwForm);
//下载
WWW www = new WWW(url);
 
 
好啦,废话不多说,下面上完整客户端代码
using System.IO;
using UnityEngine;
using System.Collections;public class Example : MonoBehaviour {void Start() {StartCoroutine(UploadPNG());}IEnumerator UploadPNG() {// 用协程等待屏幕渲染完成后再截图yield return new WaitForEndOfFrame();// 创建一个Texture2D纹理用来保存截图int width = Screen.width;int height = Screen.height;Texture2D tex = new Texture2D(width, height, TextureFormat.RGB32, false);// 将屏幕像素保存到新建的Texture2D(截图原理)tex.ReadPixels(new Rect(0, 0, width, height), 0, 0);tex.Apply();// 将截图编码为PNG格式byte[] bytes = tex.EncodeToPNG();Destroy(tex);// 使用WWWForm,往数据库添加数据WWWForm form = new WWWForm();form.AddField("frameCount", Time.frameCount.ToString());form.AddBinaryData("fileUpload", bytes);// 使用WWW上传form的内容WWW w = new WWW(url, form);yield return w;if (w.error != null)print(w.error);elseprint("Finished Uploading Screenshot");}
}





声明:此博客为个人学习之用,如与其他作品雷同,纯属巧合,并请明示指出

转载于:https://www.cnblogs.com/fws94/p/6232055.html

更多相关:

  • 菜鸟一枚,正在学习C++ Gui Qt4,整理很零碎,欢迎批评指正   1.窗口标题: QWidget *window = new QWidget; window->setWindowTitle("Enter Your Age"); **************************************** 关于标题...

  • 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 总体思路是: 比较两个链表头节点,较小的插入新链表指针之后,同时较小链表指针向后移动一位 实现如下: ListNode* mergeTwo...

  • 1.直接调用微软socket对象处理 static void Main(string[] args){try{IPAddress ip = new IPAddress(new byte[] { 127, 0, 0, 1 });//在3721端口新建一个TcpListener对象TcpListener listener = new...

  •   现在很多地方都会用到zookeeper, 用到它的地方就是为了实现分布式。用到的场景就是服务注册,比如一个集群服务器,需要知道哪些服务器在线,哪些服务器不在线。   ZK有一个功能,就是创建临时节点,当机器启动应用的时候就会连接到一个ZK节点,然后创建一个临时节点,那么通过获取监听该路径,并且获取该路径下的节点数量就知道有哪些服务...

  • 前台到后台java时data日期类型的转化 在实体类中用@DataTimeFormat,这样设置即使传过来是空的字符串也是可以转的,要和前面传过来的格式一致,如 @XmlElement(name="BeginDate") @DateTimeFormat(pattern="yyyy-MM-dd") private Date begin...