先说一下原理。。
截图有两种方法,第一种:
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");}
}
声明:此博客为个人学习之用,如与其他作品雷同,纯属巧合,并请明示指出