Unity之将Texture保存成png

本文介绍了一个Unity脚本,用于将游戏中的纹理数据保存为PNG格式的图片文件。该脚本使用了RenderTexture和Texture2D组件,并通过Graphics.Blit方法进行纹理渲染,最终实现了将指定的纹理导出到指定路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using UnityEngine;
using System.Collections;
using System.IO;

public class SaveToPng : MonoBehaviour {

	public Shader outShader;
	public Texture inputTex;

	// Use this for initialization
	void Start () {
		SaveRenderTextureToPNG(inputTex,outShader,Application.dataPath+"/temp","ok.png");
	}

	public bool SaveRenderTextureToPNG(Texture inputTex,Shader outputShader, string contents, string pngName)
	{
		RenderTexture temp = RenderTexture.GetTemporary(inputTex.width, inputTex.height, 0, RenderTextureFormat.ARGB32);
		Material mat = new Material(outputShader);
		Graphics.Blit(inputTex, temp, mat);
		bool ret = SaveRenderTextureToPNG(temp, contents,pngName);
		RenderTexture.ReleaseTemporary(temp);
		return ret;

	} 

	//将RenderTexture保存成一张png图片
	public bool SaveRenderTextureToPNG(RenderTexture rt,string contents, string pngName)
	{
		RenderTexture prev = RenderTexture.active;
		RenderTexture.active = rt;
		Texture2D png = new Texture2D(rt.width, rt.height, TextureFormat.ARGB32, false);
		png.ReadPixels(new Rect(0, 0, rt.width, rt.height), 0, 0);
		byte[] bytes = png.EncodeToPNG();
		if (!Directory.Exists(contents))
			Directory.CreateDirectory(contents);
		FileStream file = File.Open(contents + "/" + pngName + ".png", FileMode.Create);
		BinaryWriter writer = new BinaryWriter(file);
		writer.Write(bytes);
		file.Close();
		Texture2D.DestroyImmediate(png);
		png = null;
		RenderTexture.active = prev;
		return true;

	} 
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值