软件编程
位置:首页>> 软件编程>> C#编程>> Unity实现截图功能

Unity实现截图功能

作者:LLLLL__  发布时间:2022-02-18 11:36:18 

标签: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();
 }
}

来源:https://blog.csdn.net/LLLLL__/article/details/105263990

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com