Unity实现截图功能
作者:LLLLL__ 时间:2022-02-18 11:36:18
本文实例为大家分享了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
标签:unity,截图
0
投稿
猜你喜欢
Android自定义加载圈的方法
2023-07-16 14:38:46
Java使用Gateway自定义负载均衡过滤器
2022-06-27 03:55:09
SpringBoot的@Value给静态变量注入application.properties属性值
2023-09-20 11:54:07
Javaweb开发环境Myeclipse6.5 JDK1.6 Tomcat6.0 SVN1.8配置教程
2023-11-15 21:47:05
Android中Blade的使用方法
2023-04-25 11:29:54
JAVA 中Spring的@Async用法总结
2023-11-28 16:35:58
详解Android中Notification通知提醒
2023-09-10 09:57:19
C#以太网Sockets服务器设计实现
2023-10-10 04:38:32
Spring事务注解@Transactional失效的八种场景分析
2022-03-09 13:36:13
全面解析JTA 深度历险
2022-04-17 10:58:43
使用SpringBoot获取resources文件路径
2022-10-12 15:29:56
使用Spring开启注解AOP的支持放置的位置
2022-08-16 19:16:33
Android 实现定时任务的过程详解
2023-06-14 02:28:33
C#从windows剪贴板获取并显示文本内容的方法
2022-06-03 01:56:47
android计算器代码示例分享
2023-10-14 14:06:58
android实现可自由移动、监听点击事件的悬浮窗
2022-04-12 14:15:31
Spring4下validation数据校验无效(maven)的解决
2022-01-24 03:01:04
Android中ListView分页加载数据功能实现
2022-04-09 08:36:12
Easyui的combobox实现动态数据级联效果
2022-02-15 07:26:13
Android Studio多渠道打包的配置方法
2023-06-15 23:19:48