【Unity】屏幕截图

在游戏中经常会将游戏画面的截屏分享给好友,利用各平台所提供的SDK可以完美的实现分享功能,不过要截屏游戏画面,还是需要自己敲两行代码才行~

用一个截屏专用的相机,先设置好相机的参数(Size,TargetTexture等 ···),将需要截屏的画面调整到相机前,调整好位置和大小,若截屏尺寸有多个,可以动态设置相机的参数,还有一点,记得设置相机的Culling Mask~

然后,上代码 ~ 三五行搞定

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class ScreenshotManager : MonoBehaviour
{

    [SerializeField] Camera screenshotCamera;
    [SerializeField] RawImage screenshotImage;

    public void Awake()
    {
        //Test
        StartCoroutine(Screenshot());
    }

    public IEnumerator Screenshot()
    {
        screenshotCamera.gameObject.SetActive(true);
        yield return new WaitForEndOfFrame();
        //screenshotImage.texture = ScreenshotByScreenSize();
        screenshotImage.texture = ScreenshotByRenderTexture(screenshotCamera.targetTexture);
        yield return new WaitForEndOfFrame();
        screenshotCamera.gameObject.SetActive(false);
    }

    //截取屏幕,返回Texture2D
    public Texture2D ScreenshotByScreenSize()
    {
        //创建Texture2D(尺寸设置为屏幕大小)
        Texture2D screenshotTex = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);
        //绘制一个矩形,设置顶点,长宽(尺寸设置为屏幕大小)
        Rect screenshotRect = new Rect(0, 0, Screen.width, Screen.height);
        //读取屏幕的局部像素信息保存在贴图中
        screenshotTex.ReadPixels(screenshotRect, 0, 0);
        screenshotTex.Apply();
        //返回值
        return screenshotTex;
    }

    //根据相机RenderTexture尺寸,截取屏幕,返回Texture2D
    public Texture2D ScreenshotByRenderTexture(RenderTexture renderTexture)
    {
        //RenderTexture接收渲染相机结果
        RenderTexture activerRender = renderTexture;
        RenderTexture.active = activerRender;
        //创建Texture2D,绘制矩形(尺寸为给定RenderTexture大小)
        Texture2D screenshotTex = new Texture2D(activerRender.width, activerRender.height);
        Rect screenshotRect = new Rect(0, 0, activerRender.width, activerRender.height);
        //获取Texture2D数据
        screenshotTex.ReadPixels(screenshotRect, 0, 0);
        screenshotTex.Apply();
        //
        return screenshotTex;
    }

}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

萧然CS

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

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

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

打赏作者

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

抵扣说明:

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

余额充值