Unity截屏小工具

前言

​ 在unity日常开发中,有时候美工会遇到将3D场景保存为2D图片的功能,用普通的截图工具截出来的图片不是特别理想,所以需要程序员提供一个简易的截屏小工具

实现思路

​ 1、根据主摄像机生成一个用于渲染的摄像机

​ 2、新建一个RenderTexture,将摄像机渲染出来的画面指定给RenderTexture

​ 3、将RenderTexture保存为图片

​ 代码如下:

using System.IO;
using UnityEngine;/// <summary>
/// 截屏小工具
/// </summary>
public class CaptureUtil : MonoBehaviour
{private RenderTexture m_RenderTexture;void Start(){//创建RenderTexture,保存的图片大小m_RenderTexture = new RenderTexture(4096, 4096, 16);m_RenderTexture.antiAliasing = 4;//创建子摄像机if (Camera.main){GameObject newCam = Instantiate(Camera.main.gameObject);newCam.name = "renderCamera";newCam.transform.parent = Camera.main.transform;newCam.transform.localPosition = Vector3.zero;newCam.transform.localEulerAngles = Vector3.zero;newCam.transform.localScale = Vector3.one;//可根据自己需求修改摄像机配置Camera camera = newCam.GetComponent<Camera>();camera.targetTexture = m_RenderTexture;camera.clearFlags = CameraClearFlags.SolidColor;camera.backgroundColor = new Color(0, 0, 0, 0);Destroy(newCam.GetComponent<CaptureUtil>());Destroy(newCam.GetComponent<AudioListener>());}}private void OnGUI(){if (GUI.Button(new Rect(0, 0, 200, 200), "Capture")){SaveRenderToPng(m_RenderTexture, "D:/Capture", "Capture");}}/// <summary>/// 将rendertexture保存为Png图片/// </summary>/// <param name="renderT"></param>/// <param name="folderName"></param>/// <param name="name"></param>/// <returns></returns>public static Texture2D SaveRenderToPng(RenderTexture renderT, string folderName, string name){int width = renderT.width;int height = renderT.height;Texture2D tex2d = new Texture2D(width, height, TextureFormat.ARGB32, false);RenderTexture.active = renderT;tex2d.ReadPixels(new Rect(0, 0, width, height), 0, 0);tex2d.Apply();byte[] b = tex2d.EncodeToPNG();if (!Directory.Exists(folderName))Directory.CreateDirectory(folderName);FileStream file = File.Open(folderName + "/" + name + GetTimeName() + ".png", FileMode.Create);BinaryWriter writer = new BinaryWriter(file);writer.Write(b);file.Close();return tex2d;}/// <summary>/// 保存文件名称/// </summary>/// <returns></returns>public static string GetTimeName(){return System.DateTime.Now.Year.ToString() + System.DateTime.Now.Month.ToString() +System.DateTime.Now.Day.ToString() + System.DateTime.Now.Hour.ToString() +System.DateTime.Now.Minute.ToString() + System.DateTime.Now.Second.ToString() +System.DateTime.Now.Millisecond.ToString();}
}

使用说明

​ 1、美工设置好场景中的主摄像机镜头

​ 2、将脚本拖动到主摄像机上,运行场景

​ 3、点击左上角Capture按钮即可

​ 4、可以在运行起来的时候,在主摄像机下,找到renderCamera(渲染摄像机),根据自己需求调整摄像机参数

Unity 截屏小工具相关推荐

  1. 【kimol君的无聊小发明】—用python写截屏小工具

    [kimol君的无聊小发明]-用python写截屏小工具 前言 一.技术实现 1. 相关库 2. 定义窗口 3. 绘制工具条 4. 定义事件函数 二.后续改进 写在最后 前言 今天我看了一下自己的文件 ...

  2. 截图截屏小工具Snipaste简单易用

    截图截屏小工具Snipaste简单易用 百度网盘地址:https://pan.baidu.com/s/195T96Al-plXSxXezTdybqg

  3. python小工具小发明_【kimol君的无聊小发明】—用python写截屏小工具

    前言 今天我看了一下自己的文件夹,发现了自己写了许多似乎很无聊的代码.于是乎,一个想法油然而生:"生活已经很无聊了,不如再无聊一点叭". 说干就干,那就开一个专题,我们称之为kim ...

  4. Unity 实用代码 小工具

    Unity 实用代码 小工具 Unity 屏幕截图 全屏截图方法 全屏截图方法 带委托事件 自定义截图方法 自定义截图方法 带委托 延迟工具 携程延迟方法 携程延迟带委托方法 场景加载 场景加载 方法 ...

  5. 一个基于.Net开发的Windows截屏录制工具

    今天给大家推荐一个UI漂亮.功能强大的截屏录制工具. 项目简介 这是基于.Net开发的,屏幕截图.录屏的开源项目.功能非常强大,功能列表如下: 1.截图:全屏截图.滚动截图.检测窗口截图.自动截图.倒 ...

  6. C# 编写简单易用的 Windows 截屏增强工具

    前言 半年前我开源了 DreamScene2 一个小而快并且功能强大的 Windows 动态桌面软件.具体看查看<C# 编写小巧快速的 Windows 动态桌面软件>有很多的人喜欢,这使我 ...

  7. C# 学习笔记(11)蓝屏小工具

    C# 学习笔记(11)蓝屏小工具 加载界面参考 C# Winform 现代化扁平化启动界面设计https://www.bilibili.com/video/BV17E41147wM PS做一张图 70 ...

  8. 用python制作一款录屏小工具

    天我想学习记录的内容是 -- 如何用python实现录屏. 1 写在前面 作为一名测试,有时候经常会遇到需要录屏记录自己操作,方便后续开发同学定位.以前都是用ScreenToGif来录屏制作成动态图, ...

  9. 推荐一款截屏翻译工具|截屏提取文字|划词翻译

    推荐一款截屏翻译工具|截屏提取文字|划词翻译   大家有没有过这样的经历,搜索一篇阅读心得或者心得体会的时候,看到自己感兴趣的一篇文章,打算复制下来上交"任务"时,发现复制不了,连 ...

最新文章

  1. sscanf()的用法和例子
  2. sql array 数组基本用法(三)
  3. JavaScript——对象合并解决方案
  4. 82 个代码案例实践,带你学好 Python 机器学习
  5. 远程连接Oracle 数据库连接报错ORA-12638身份检索失败
  6. python找不到模块pyodbc_“import pyodbc”导致“没有名为pyodbc的模块”
  7. 基于JAVA+SpringBoot+Mybatis+MYSQL的在线心理测评管理系统
  8. 在Altium Designer中利用阵列粘贴功能快速绘制元器件封装
  9. NBA TopShot中勒布朗·詹姆斯的数字收藏卡以4.75万美元售出
  10. java modal_Java 源码-模态对话框(Modal Dialog Box)的实现
  11. H5 - template native模板 实现列表布局
  12. java从JDK里提取全球数据,包含国家(名称、二字代码、三字代码)、币种(名称和代码)、和语言种类的数据
  13. ong拼音汉字_儿童拼音汉字入门
  14. android translateanimation动画,Android 动画之TranslateAnimation应用详解
  15. 前端微信小程序面试题总结
  16. 推荐一本书:清华出版的《Modbus软件开发实战指南》
  17. 群联PS2251-03芯片量产成功详细图文教程
  18. 万字长文 | 数据分析师的机遇与挑战
  19. 2019计算机小高考成绩,小高考没过怎么办 2021小高考难度如何
  20. C盘扩容 ~直接磁盘管理器不能扩展~bitlocker加密解除

热门文章

  1. 立创开源zigbee2mqtt网关 简称:z2m
  2. 修复浏览器报错 Error in mounted hook (Promise/async): “[object Object]“
  3. 将 uniqueidentifier 值转换为 char 时结果空间不足
  4. notion自建服务器,秒杀传统型笔记!《Notion》等 5 款工具全方位对比,模块化笔记究竟强在哪?...
  5. 计算机专业教学改革方案,高校计算机专业现状分析及教学改革方案
  6. 百度 - 测开实习生面经
  7. 邂逅Node.js开发
  8. android取图片颜色代码,Android Palette 提取图片的主色调
  9. ROS基础一之ROS常用指令集合
  10. IIS7.5 FTP站点正确设置及启用用户隔离和绑定主机名(踩坑记)