Unity3D里截图并保存在指定目录下


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);
		}
	}

  只放出核心代码!以后有时间会补全和详细讲解!

因为我是需要截图后出现预览效果,所以并没有使用协程,如果用协程需要加一句代码,等待当前那一帧结束!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM