Unity 入门教程 之 ScreenShot截图功能的实现二
Unity 入门教程 之 ScreenShot截图功能的实现一。在Unity中实现游戏截图,保留精彩瞬间,其中实现的方法很多种没在接下来的教程中依次介绍。本节介绍使用Texture2D 读取屏幕信息,并保存到文件路径的方法实现截图,具体如下
工具/原料
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截图功能的实现二》讲解结束,谢谢