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

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

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

  • 相关阅读:
    获取系统版本
    一句代码删除所有子视图
    MAJOR-MINOR-MKDEV
    AF_UNIX和AF_INET域的socket在epoll中的差异
    python-print
    python-class(5)
    python-class(4)
    python-class(3)
    python-class(2)
    python-class(1)
  • 原文地址:https://www.cnblogs.com/vital/p/3564206.html
Copyright © 2020-2023  润新知