unity截屏小工具

1、直接保存场景运行时的画面到指定路径。保存的画面为Game中所看到的所有,参数为保存图片的相对路径。

        [MenuItem( "Tool/保存Game中界面为图片" )]
        public static void CaptureScreen() {
            ScreenCapture.CaptureScreenshot( "Assets/Art/截图.png" );
            // 刷新Unity文件,使保存的截图文件立刻刷新到文件列表中
            AssetDatabase.Refresh();
        }

2、保存场景中指定相机渲染的画面,可以指定截图的大小,保存的路径。

        /// <summary>
        /// 保存截屏
        /// </summary>
        /// <param name="camera"> 渲染的相机 </param>
        /// <param name="rect"> 位置,大小 </param>
        /// <param name="fileName"> 保存的路径 </param>
        public static void CaptureScreenByRT( Camera camera, Rect rect, string fileName ) {
            // 创建一个RenderTexture对象  
            RenderTexture rt = new RenderTexture( ( int )rect.width, ( int )rect.height, 0 );
            // 临时设置相关相机的targetTexture为rt, 并手动渲染相关相机  
            camera.targetTexture = rt;
            camera.Render();
            // 激活这个rt, 并从中中读取像素。  
            RenderTexture.active = rt;
            Texture2D screenShot = new Texture2D( ( int )rect.width, ( int )rect.height, TextureFormat.RGB24, false );
            // 注:这个时候,它是从RenderTexture.active中读取像素 
            screenShot.ReadPixels( rect, 0, 0 );
            screenShot.Apply();
            // 重置相关参数,以使用camera继续在屏幕上显示  
            camera.targetTexture = null;
            RenderTexture.active = null;
            GameObject.Destroy( rt );
            // 最后将这些纹理数据,成一个png图片文件  
            byte[] bytes = screenShot.EncodeToPNG();

            System.IO.File.WriteAllBytes( fileName, bytes );

            // 提示窗口
            EditorUtility.DisplayDialog( "提示: ", "保存截图成功!", "确定" );

        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值