using UnityEngine; using System.Collections; using System.IO; /// <summary> /// Save render texture. /// 1.需要在Assets同级目录下新建一个Dump文件夹 /// 2.一般绑在摄像机下 /// 3.摄像机中添加RenderTexture,并将其设置为OutputTexture /// </summary> public class SaveRenderTexture : MonoBehaviour { public RenderTexture OutputTexture; [ContextMenu("Save png")] private void SaveTextureToFile() { if (OutputTexture != null) { RenderTexture prev = RenderTexture.active; RenderTexture.active = OutputTexture; Texture2D png = new Texture2D(OutputTexture.width, OutputTexture.height, TextureFormat.ARGB32, false); png.ReadPixels(new Rect(0, 0, OutputTexture.width, OutputTexture.height), 0, 0); byte[] bytes = png.EncodeToPNG(); string path = string.Format("Dump/raw {0}.png", Random.Range(0, 65536).ToString("X")); FileStream file = File.Open(path, FileMode.Create); BinaryWriter writer = new BinaryWriter(file); writer.Write(bytes); file.Close(); png = null; RenderTexture.active = prev; } } }