Unity 入门教程 之 ScreenShot截图功能的实现二
1、打开Unity,新建一个空工程,然后Unity界面如下图
2、在工程中新建一个脚本,脚本可以命名为“ScreenShotTest”,具体如下图
3、选中“ScreenShotTest”脚本,双击脚本或者右键“Open C# Project”,打开脚本,具体如下图
4、在打开的脚本上进行代码编辑,首先设置一个初始化截图保存路径,然后设置一个截图按钮,最后实现按钮调用事件实现截图功能,其中用Texture2D读取屏幕信息,然后把读到的信息转为字节写到文件里形成图片,具体代码及代码说明如下图
5、文本代码如下:
using System.Collections;
using UnityEngine;
public class ScreenShotTest : MonoBehaviour
{
//定义图片保存路径
private string mPath2;
void Start()
{
//初始化路径
mPath2 = Application.dataPath + "/ScreenShot/ScreenShot2.png";
}
//主方法,使用UGUI实现
void OnGUI()
{
if (GUILayout.Button("截图方式2", GUILayout.Height(30)))
{
StartCoroutine(CaptureByRect(new Rect(0, 0, 1024, 768), mPath2));
}
}
/// <summary>
/// 根据一个Rect类型来截取指定范围的屏幕
/// 左下角为(0,0)
/// </summary>
/// <param name="mRect">M rect.</param>
/// <param name="mFileName">M file name.</param>
private IEnumerator CaptureByRect(Rect mRect, string mFileName)
{
//等待渲染线程结束
yield return new WaitForEndOfFrame();
//初始化Texture2D
Texture2D mTexture = new Texture2D((int)mRect.width, (int)mRect.height, TextureFormat.RGB24, false);
//读取屏幕像素信息并存储为纹理数据
mTexture.ReadPixels(mRect, 0, 0);
//应用
mTexture.Apply();
//将图片信息编码为字节信息
byte[] bytes = mTexture.EncodeToPNG();
//保存
System.IO.File.WriteAllBytes(mFileName, bytes);
//如果需要可以返回截图
//return mTexture;
}
}
6、脚本编译正确后,回到Unity界面,在场景中新建一个“GameObject”、“Cube”、“Sphere”,并适当调整布局,然后把脚本“ScreenShotTest”赋给“GameObject”,具体如下图
7、运行场景,点击按钮即可实现截图,也可以看见路径下的截图保留文件,具体如下图
8、到此,《Unity 入门教程 之 ScreenShot截图功能的实现二》讲解结束,谢谢