Unity实现截图功能

本文实例为大家分享了Unity实现截图功能的具体代码,供大家参考,具体内容如下

一、使用Unity自带API

using UnityEngine;

using UnityEngine.UI;

public class ScreenShotTest : MonoBehaviour

{

public RawImage img;

private void Update()

{

//使用ScreenCapture.CaptureScreenshot

if (Input.GetKeyDown(KeyCode.A))

{

ScreenCapture.CaptureScreenshot(Application.dataPath + "/Resources/Screenshot.jpg");

img.texture = Resources.Load<Texture>("Screenshot");

}

//使用ScreenCapture.CaptureScreenshotAsTexture

if (Input.GetKeyDown(KeyCode.S))

{

img.texture = ScreenCapture.CaptureScreenshotAsTexture(0);

}

//使用ScreenCapture.CaptureScreenshotAsTexture

if (Input.GetKeyDown(KeyCode.D))

{

RenderTexture renderTexture = new RenderTexture(720, 1280, 0);

ScreenCapture.CaptureScreenshotIntoRenderTexture(renderTexture);

img.texture = renderTexture;

}

}

}

经过测试,使用ScreenCapture.CaptureScreenshotAsTexture和ScreenCapture.CaptureScreenshotAsTexture截取的都是整个屏幕,相当于手机的截屏,无法自定义截图区域,作用不大。使用ScreenCapture.CaptureScreenshot会有延迟。

二、通过Texture2D.ReadPixels来读取屏幕区域像素

using UnityEngine;

using System.Collections;

using System;

public class ScreenShotTest : MonoBehaviour

{

private void Update()

{

if (Input.GetKeyDown(KeyCode.A))

{

StartCoroutine(CaptureByRect());

}

}

private IEnumerator CaptureByRect()

{

//等待渲染线程结束

yield return new WaitForEndOfFrame();

//初始化Texture2D, 大小可以根据需求更改

Texture2D mTexture = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);

//读取屏幕像素信息并存储为纹理数据

mTexture.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);

//应用

mTexture.Apply();

//将图片信息编码为字节信息

byte[] bytes = mTexture.EncodeToPNG();

//保存(不能保存为png格式)

string fileName = DateTime.Now.Hour + ":" + DateTime.Now.Minute + ":" + DateTime.Now.Second + ".jpg";

System.IO.File.WriteAllBytes(Application.streamingAssetsPath + "/ScreenShot/" + fileName, bytes);

UnityEditor.AssetDatabase.Refresh();

}

}

以上是 Unity实现截图功能 的全部内容, 来源链接: utcz.com/z/341740.html

回到顶部