using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
public class CoroutineTest : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
StartCoroutine(ScreenShotPng());
}
IEnumerator ScreenShotPng()
{
yield return new WaitForEndOfFrame();
int width = Screen.width;
int height = Screen.height;
Texture2D tex = new Texture2D(width, height, TextureFormat.RGB24, false);
tex.ReadPixels(new Rect(0, 0, width, height), 0, 0);//从屏幕读取像素到保存的纹理数据,如果最后一个参数被设为false则必须使用apply来保存修改,若为true 则纹理的映射也被更新
tex.Apply();//应用之前所有的SetPixel修改
byte[] bytes = tex.EncodeToPNG();
Destroy(tex);
File.WriteAllBytes(Application.dataPath + "/SaveScreen.png", bytes);
}
// Update is called once per frame
void Update()
{
}
}
Unity3D实现屏幕截图
最新推荐文章于 2024-08-10 15:55:30 发布
本文介绍了一个在Unity中使用C#脚本进行屏幕截图的方法,通过创建一个协程,等待帧结束,然后读取屏幕像素并将其转换为PNG格式,最后保存到指定路径。
1万+

被折叠的 条评论
为什么被折叠?



