此脚本挂到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);
}
}