Unity 入门教程 之 ScreenShot截图功能的实现二

2025-10-21 06:45:20

1、打开Unity,新建一个空工程,然后Unity界面如下图

Unity 入门教程 之 ScreenShot截图功能的实现二

2、在工程中新建一个脚本,脚本可以命名为“ScreenShotTest”,具体如下图

Unity 入门教程 之 ScreenShot截图功能的实现二

3、选中“ScreenShotTest”脚本,双击脚本或者右键“Open C# Project”,打开脚本,具体如下图

Unity 入门教程 之 ScreenShot截图功能的实现二

4、在打开的脚本上进行代码编辑,首先设置一个初始化截图保存路径,然后设置一个截图按钮,最后实现按钮调用事件实现截图功能,其中用Texture2D读取屏幕信息,然后把读到的信息转为字节写到文件里形成图片,具体代码及代码说明如下图

Unity 入门教程 之 ScreenShot截图功能的实现二

Unity 入门教程 之 ScreenShot截图功能的实现二

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”,具体如下图

Unity 入门教程 之 ScreenShot截图功能的实现二

7、运行场景,点击按钮即可实现截图,也可以看见路径下的截图保留文件,具体如下图

Unity 入门教程 之 ScreenShot截图功能的实现二

8、到此,《Unity 入门教程 之 ScreenShot截图功能的实现二》讲解结束,谢谢

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢