/// <summary>
/// 截屏
/// </summary>
/// <returns></returns>
IEnumerator SaveTexture()
{
Texture2D screenShot = new Texture2D((int)mTexture.width, (int)mTexture.height, TextureFormat.ARGB32, false);
RenderTexture rt = new RenderTexture((int)mTexture.width, (int)mTexture.height, (int)RenderTextureFormat.ARGB32);
yield return new WaitForEndOfFrame();//需要等待渲染完毕再进行下一步操作,避免BUG
mCamera.targetTexture = rt;
mCamera.Render();
yield return new WaitForEndOfFrame();//需要等待渲染完毕再进行下一步操作,避免BUG
RenderTexture.active = rt;
//Read pixels from screen into the saved texture data
screenShot.ReadPixels(new Rect(0, 0, mTexture.width, mTexture.height), 0, 0);
screenShot.Apply();
mCamera.targetTexture = null;
RenderTexture.active = null;
GameObject.Destroy(rt);
var directory = @"E:\test";
var location = @"E:\test\demo_1.jpg";
OnSaveBlurFile(screenShot, directory, location);
}
/// <summary>
/// 保存修改好的文件
/// </summary>
/// <param name="rt2D"></param>
/// <param name="directory"></param>文件所在目录
/// <param name="location"></param>文件全路径
void OnSaveBlurFile(Texture2D rt2D,string directory,string location)
{
byte[] bytes = rt2D.EncodeToJPG(97);
if (!Directory.Exists(directory))
Directory.CreateDirectory(directory);
FileStream file = File.Open(location, FileMode.Create);
BinaryWriter writer = new BinaryWriter(file);
writer.Write(bytes);
file.Close();
Texture2D.DestroyImmediate(rt2D);
rt2D = null;
}
Unity—截屏并存为图片
猜你喜欢
转载自blog.csdn.net/Le_Sam/article/details/82998165
今日推荐
周排行