【Unity】Unity中通过纹理截屏将图片保存到本地

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

public class SavedScreen : MonoBehaviour {

	
	void Start () {
		// 开启一个协程
		StartCoroutine (UploadPNG());
	}
	

	// 定义一个协程
	IEnumerator UploadPNG () {
		

		// 因为"WaitForEndOfFrame"在OnGUI之后执行
		// 所以我们只在渲染完成之后才读取屏幕上的画面
		yield return new WaitForEndOfFrame();



		int width = Screen.width;
		int height = Screen.height;
		// 创建一个屏幕大小的纹理,RGB24 位格(24位格没有透明通道,32位的有)
		Texture2D tex = new Texture2D (width, height, TextureFormat.RGB24, false);

		// 读取屏幕内容到我们自定义的纹理图片中
		tex.ReadPixels (new Rect(0, 0, width, height), 0, 0);
		// 保存前面对纹理的修改
		tex.Apply ();

		// 编码纹理为PNG格式
		byte[] bytes = tex.EncodeToPNG();
		// 销毁吴永的图片纹理
		Destroy (tex);

		// 将字节保存成图片,这个路径只能在PC端对图片进行读写操作
		File.WriteAllBytes(Application.dataPath + "/onPcSavedScreen.png", bytes);
		// 这个路径会将图片保存到手机的沙盒中,这样就可以在手机上对其进行读写操作了
		File.WriteAllBytes(Application.persistentDataPath + "/onMobileSavedScreen.png", bytes);

	}
}


Unity保存截图是一个很简单的操作。首先,我们需要在Unity的脚本编写保存截图的代码。代码示例如下: ```csharp using UnityEngine; public class Screenshot : MonoBehaviour { // 设置截图的文件名 public string fileName = "screenshot.png"; void Update() { // 当用户按下指定的按键(例如空格键)时,执行截图操作 if (Input.GetKeyDown(KeyCode.Space)) { // 获取当前屏幕的宽度和高度 int width = Screen.width; int height = Screen.height; // 创建一个新的2D纹理,并将屏幕内容拷贝到这个纹理 Texture2D tex = new Texture2D(width, height, TextureFormat.RGB24, false); tex.ReadPixels(new Rect(0, 0, width, height), 0, 0); tex.Apply(); // 将纹理保存为PNG格式的图片 byte[] bytes = tex.EncodeToPNG(); System.IO.File.WriteAllBytes(fileName, bytes); } } } ``` 在这段代码,我们首先定义了一个变量`fileName`,用来保存截图的文件名。然后在`Update`方法,我们检测用户是否按下了空格键,如果按下了空格键,就执行截图操作。截图操作的具体步骤是:获取屏幕的宽度和高度,创建一个新的2D纹理,将屏幕内容拷贝到这个纹理,然后将纹理保存为PNG格式的图片。 当我们把这段代码添加到一个游戏对象上之后,只需要在Unity运行游戏,按下空格键,就可以保存当前屏幕的截图了。这样我们就可以很方便地在Unity进行截图保存操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zok93

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值