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); else print("Finished Uploading Screenshot"); } }
声明:此博客为个人学习之用,如与其他作品雷同,纯属巧合,并请明示指出