Unity屏幕截图

26 篇文章 0 订阅

此脚本挂到MainCamera上,不包含UI
我的另一篇有讲到怎么保存图片的
https://blog.csdn.net/A13155283231/article/details/103301111
https://github.com/zane133/UnityNormalSmoothTools

  • 注意GetTemporary可以设置RT的格式,不然gamma linear容易出错
  • RT释放需要RenderTexture.ReleaseTemporary(rt);这种方式释放,不然内存会爆
public class ScreenCapture : MonoBehaviour
{
    private RenderTexture rt;
    
    private void Update()
    {
        // 截图
        if (Input.GetKeyDown(KeyCode.P))
        {
            //Debug.Log("srgb " + rt.sRGB);

            int width = rt.width;
            int height = rt.height;
            Texture2D texture2D = new Texture2D(width, height, TextureFormat.ARGB32, false);
            RenderTexture.active = rt;
            texture2D.ReadPixels(new Rect(0, 0, width, height), 0, 0);
            texture2D.Apply();
            UsingUnityUtils.SaveRenderTextureToPNG(
                texture2D,
                Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
                DateTime.Now.ToString("yyyyMMddHHmmssffff"));
        }

    }

    void OnRenderImage(RenderTexture source, RenderTexture destination)
    {
        rt = RenderTexture.GetTemporary(source.width, source.height, 0);
        Graphics.Blit(source, rt);
        Graphics.Blit(source, destination);
        RenderTexture.ReleaseTemporary(rt);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值