using UnityEngine;
using UnityEditor;

public class SaveScreenshotToFile {
    [MenuItem("Custom/Render Camera to file")]
    public static void RenderCameraToFile()
    {
        Camera camera = Selection.activeGameObject.GetComponent<Camera>();
        
        RenderTexture rt = new RenderTexture(2560, 1440, 24, RenderTextureFormat.ARGB32, RenderTextureReadWrite.sRGB);
        RenderTexture oldRT = camera.targetTexture;
        camera.targetTexture = rt;
        camera.Render();
        camera.targetTexture = oldRT;
        
        RenderTexture.active = rt;
        Texture2D tex = new Texture2D(rt.width, rt.height, TextureFormat.RGB24, false);
        tex.ReadPixels(new Rect(0, 0, rt.width, rt.height), 0, 0);
        RenderTexture.active = null;
        
        byte[] bytes = tex.EncodeToPNG();
        string path = "Assets/screenshot.png";
        System.IO.File.WriteAllBytes(path, bytes);
        AssetDatabase.ImportAsset(path);
        Debug.Log("Saved to " + path);
    }
    
    [MenuItem("Custom/Render Camera to file", true)]
    public static bool RenderCameraToFileValidation()
    {
        return Selection.activeGameObject != null && Selection.activeGameObject.GetComponent<Camera>() != null;
    }
}