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); } }
只放出核心代码!以后有时间会补全和详细讲解!
因为我是需要截图后出现预览效果,所以并没有使用协程,如果用协程需要加一句代码,等待当前那一帧结束!