Unity引擎自带截屏

UnityEngine 中有三个截屏的方法:

  1. ScreenCapture.CaptureScreenshot

  1. ScreenCapture.CaptureScreenshotAsTexture

  1. ScreenCapture.CaptureScreenshotIntoRenderTexture

  1. ScreenCapture.CaptureScreenshot

声明的方法有:public static void CaptureScreenshot(string filename,int superSize);

public static void CaptureScreenshot(string filename, ScreenCapture.StereoScreenCaptureMode stereoCaptureMode);

使用技巧:

其中filename参数是指截图保存的路径,superSize是输出分辨率的倍数,而stereoCaptureMode,用立体渲染时采用左眼(LeftEye),右眼(RightEye),或者两者(BothEyes)模式。

截屏所保存的图片是.png格式。

2.ScreenCapture.CaptureScreenshotAsTexture 声明的方法有:public static Texture2D CaptureScreenshotAsTexture(int superSize);

public static Texture2D CaptureScreenshotAsTexture(ScreenCapture.StereoScreenCaptureMode stereoCaptureMode);

使用技巧:

此方法通过截屏返回一个Texture2D的贴图;

参数与上一个方法同名参数意义一样;

使用此截图发方法需要确保在帧渲染结束后调用,所以通常结合协程一起使用。

3.ScreenCapture.CaptureScreenshotIntoRenderTexture

声明的方法有:public static void CaptureScreenshotIntoRenderTexture(RenderTexture renderTexture);

使用技巧:

此方法将把截图返回一个RenderTexture对象;

使用此截图发方法需要确保在帧渲染结束后调用,所以通常结合协程一起使用。

该方法方便使用AsyncGPUReadback进行异步读取像素

例:

using UnityEngine;
using System.Collections;
using UnityEngine.Rendering;

public class ScreenCaptureIntoRenderTexture : MonoBehaviour
{
    private RenderTexture renderTexture;

    IEnumerator Start()
    {
        yield return new WaitForEndOfFrame();

        renderTexture = new RenderTexture(Screen.width, Screen.height, 0);
        ScreenCapture.CaptureScreenshotIntoRenderTexture(renderTexture);
        AsyncGPUReadback.Request(renderTexture, 0, TextureFormat.RGBA32, ReadbackCompleted);
    }

    void ReadbackCompleted(AsyncGPUReadbackRequest request)
    {
        DestroyImmediate(renderTexture); //不需要保留渲染图,删除

        using (var imageBytes = request.GetData<byte>())
        {
            // 可在此处获取像素后进行相关处理
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序猿游也

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

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

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

打赏作者

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

抵扣说明:

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

余额充值