private void OnScreenCapture ()
{
//yield return new WaitForEndOfFrame();
try {
int width = Screen.width;
int height = Screen.height-reduceHigh;
Texture2D tex = new Texture2D (width, height, TextureFormat.RGB24, false);
tex.ReadPixels (new Rect (0, bottomStarH, width, height), 0, 0, true);
byte[] imagebytes = tex.EncodeToPNG ();
tex.Compress (false);
tex.Apply();
mScreenShotImgae = tex;
if (Application.platform == RuntimePlatform.Android || Application.platform == RuntimePlatform.IPhonePlayer)
{
path = Application.persistentDataPath + screenShotFileName +".png";
string origin = path;
string destination = "/mnt/sdcard/moliputao";
if(!Directory.Exists(destination))
{
Directory.CreateDirectory(destination);
}
destination = destination + "/" + screenShotFileName +".png";
if(System.IO.File.Exists(origin))
{
System.IO.File.Move(origin,destination);
}
path = destination;
}
else if (Application.platform == RuntimePlatform.WindowsEditor) {
path = Application.dataPath;
path = path.Replace ("/Assets", "/"+screenShotFileName + ".png");
}
File.WriteAllBytes (path, imagebytes);
mScreenShotImgae = tex;
} catch (System.Exception e) {
Debug.Log ("ScreenCaptrueError:" + e);
}
}
只放出核心代码!以后有时间会补全和详细讲解!
因为我是需要截图后出现预览效果,所以并没有使用协程,如果用协程需要加一句代码,等待当前那一帧结束!