先说一下原理。。

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

  1. Application.CaptureScreenshot(url);

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

这里我们不采用此方法

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

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

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

  1. WWWForm wwwForm = new WWWForm();
  2.  
  3. wwwForm.AddField(“Username”,name);
  4.  
  5. wwwForm.AddField(“ID”,id);

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

  1. //上传
  2. WWW www = new WWW(url,wwwForm);
  3. //下载
  4. WWW www = new WWW(url);
  1.  
  1.  
  1. 好啦,废话不多说,下面上完整客户端代码
  1. using System.IO;
  2. using UnityEngine;
  3. using System.Collections;
  4.  
  5. public class Example : MonoBehaviour {
  6.  
  7. void Start() {
  8. StartCoroutine(UploadPNG());
  9. }
  10. IEnumerator UploadPNG() {
  11. // 用协程等待屏幕渲染完成后再截图
  12. yield return new WaitForEndOfFrame();
  13.  
  14. // 创建一个Texture2D纹理用来保存截图
  15. int width = Screen.width;
  16. int height = Screen.height;
  17. Texture2D tex = new Texture2D(width, height, TextureFormat.RGB32, false);
  18.  
  19. // 将屏幕像素保存到新建的Texture2D(截图原理)
  20. tex.ReadPixels(new Rect(0, 0, width, height), 0, 0);
  21. tex.Apply();
  22.  
  23. // 将截图编码为PNG格式
  24. byte[] bytes = tex.EncodeToPNG();
  25. Destroy(tex);
  26.  
  27. // 使用WWWForm,往数据库添加数据
  28. WWWForm form = new WWWForm();
  29. form.AddField("frameCount", Time.frameCount.ToString());
  30. form.AddBinaryData("fileUpload", bytes);
  31.  
  32. // 使用WWW上传form的内容
  33. WWW w = new WWW(url, form);
  34. yield return w;
  35. if (w.error != null)
  36. print(w.error);
  37. else
  38. print("Finished Uploading Screenshot");
  39. }
  40. }
  41.  
  1. 声明:此博客为个人学习之用,如与其他作品雷同,纯属巧合,并请明示指出

Unity协程截图,WWWForm、WWW配合上传的更多相关文章

  1. 深入浅出!从语义角度分析隐藏在Unity协程背后的原理

    Unity的协程使用起来比较方便,但是由于其封装和隐藏了太多细节,使其看起来比较神秘.比如协程是否是真正的异步执行?协程与线程到底是什么关系?本文将从语义角度来分析隐藏在协程背后的原理,并使用C++来 ...

  2. Unity 协程(Coroutine)原理与用法详解

    前言: 协程在Unity中是一个很重要的概念,我们知道,在使用Unity进行游戏开发时,一般(注意是一般)不考虑多线程,那么如何处理一些在主任务之外的需求呢,Unity给我们提供了协程这种方式 为啥在 ...

  3. 聊一聊Unity协程背后的实现原理

    Unity开发不可避免的要用到协程(Coroutine),协程同步代码做异步任务的特性使程序员摆脱了曾经异步操作加回调的编码方式,使代码逻辑更加连贯易读.然而在惊讶于协程的好用与神奇的同时,因为不清楚 ...

  4. Unity协程(Coroutine)原理深入剖析

    Unity协程(Coroutine)原理深入剖析 By D.S.Qiu 尊重他人的劳动,支持原创,转载请注明出处:http.dsqiu.iteye.com 其实协程并没有那么复杂,网上很多地方都说是多 ...

  5. Unity协程(Coroutine)原理深入剖析(转载)

    记得去年6月份刚开始实习的时候,当时要我写网络层的结构,用到了协程,当时有点懵,完全不知道Unity协程的执行机制是怎么样的,只是知道函数的返回值是IEnumerator类型,函数中使用yield r ...

  6. unity协程coroutine浅析

    转载请标明出处:http://www.cnblogs.com/zblade/ 一.序言 在unity的游戏开发中,对于异步操作,有一个避免不了的操作: 协程,以前一直理解的懵懵懂懂,最近认真充电了一下 ...

  7. Unity协程Coroutine使用总结和一些坑

    原文摘自 Unity协程Coroutine使用总结和一些坑 MonoBehavior关于协程提供了下面几个接口: 可以使用函数或者函数名字符串来启动一个协程,同时可以用函数,函数名字符串,和Corou ...

  8. Unity 协程使用指南

    0x00 前言 在使用Unity的过程中,对协程仅仅知道怎样使用,但并不知道协程的内部机理,对于自己不清楚的部分就像一块大石压力心里.让自己感觉到担忧和不适. 这篇文章一探到底,彻底揭开协程的面纱,让 ...

  9. Unity协程(Coroutine)原理深入剖析再续

    Unity协程(Coroutine)原理深入剖析再续 By D.S.Qiu 尊重他人的劳动,支持原创,转载请注明出处:http.dsqiu.iteye.com 前面已经介绍过对协程(Coroutine ...

随机推荐

  1. Esfog_UnityShader教程_UnityShader语法实例浅析

    距离上次首篇前言已经有一段时间了,一直比较忙,今天是周末不可以再拖了,经过我一段时间的考虑,我决定这一系列的教程会避免过于深入细节,一来可以避免一些同学被误导,二来会避免文章过于冗长难读, 三来可以让 ...

  2. IRC常用命令

    From: http://www.blogjava.net/ivanwan/archive/2006/02/17/31296.html IRC命令可以实现一些特殊的功能.目前,亿言堂支持14条IRC命 ...

  3. Capture Current Soft Screen

    Bitmap memoryImage; private void CaptureScreen() { Graphics myGraphics = this.CreateGraphics(); Size ...

  4. 《疯狂Java讲义》(一) ---- 关于学习Java的反思

    "听到Spring很火,就立马买来一本Spring的书来读,最后结果往往是失败,因为这种学习没有积累,没有根基,学习过程中困难重重,每天都被一些相同.类似的问题所困扰,起初热情十足,经常上论 ...

  5. onethink入门笔记(二)

    5.onethink页面端获得后台服务器传值的方法 1:一般后台通过assign的值前台通过{$value}显示出来; 2:如果需要在js中使用 则可以通过 在js中写 var m = "{ ...

  6. Linux 用户和用户组管理

    Linux 用户和用户组管理 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统. 用户的账号一方面可以帮助 ...

  7. java io 流分类表

    Java输入/输出流体系中常用的流分类(表内容来自java疯狂讲义) 注:下表中带下划线的是抽象类,不能创建对象.粗体部分是节点流,其他就是常用的处理流. 流分类 使用分类 字节输入流 字节输出流 字 ...

  8. Oracle死锁处理

    SELECT s.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#, l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESS,b.O ...

  9. MySQL之权限管理

    MySQL之权限管理 一.MySQL权限简介 关于mysql的权限简单的理解就是mysql允许你做你全力以内的事情,不可以越界.比如只允许你执行select操作, 那么你就不能执行update操作.只 ...

  10. C语言编程技巧-signal(信号)[转]

    自 http://www.uml.org.cn/c++/200812083.asp 信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念.Linux对信号机制的大致实现方法.如何使用 ...