Unity 截屏小工具
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 截屏小工具相关推荐
- 【kimol君的无聊小发明】—用python写截屏小工具
[kimol君的无聊小发明]-用python写截屏小工具 前言 一.技术实现 1. 相关库 2. 定义窗口 3. 绘制工具条 4. 定义事件函数 二.后续改进 写在最后 前言 今天我看了一下自己的文件 ...
- 截图截屏小工具Snipaste简单易用
截图截屏小工具Snipaste简单易用 百度网盘地址:https://pan.baidu.com/s/195T96Al-plXSxXezTdybqg
- python小工具小发明_【kimol君的无聊小发明】—用python写截屏小工具
前言 今天我看了一下自己的文件夹,发现了自己写了许多似乎很无聊的代码.于是乎,一个想法油然而生:"生活已经很无聊了,不如再无聊一点叭". 说干就干,那就开一个专题,我们称之为kim ...
- Unity 实用代码 小工具
Unity 实用代码 小工具 Unity 屏幕截图 全屏截图方法 全屏截图方法 带委托事件 自定义截图方法 自定义截图方法 带委托 延迟工具 携程延迟方法 携程延迟带委托方法 场景加载 场景加载 方法 ...
- 一个基于.Net开发的Windows截屏录制工具
今天给大家推荐一个UI漂亮.功能强大的截屏录制工具. 项目简介 这是基于.Net开发的,屏幕截图.录屏的开源项目.功能非常强大,功能列表如下: 1.截图:全屏截图.滚动截图.检测窗口截图.自动截图.倒 ...
- C# 编写简单易用的 Windows 截屏增强工具
前言 半年前我开源了 DreamScene2 一个小而快并且功能强大的 Windows 动态桌面软件.具体看查看<C# 编写小巧快速的 Windows 动态桌面软件>有很多的人喜欢,这使我 ...
- C# 学习笔记(11)蓝屏小工具
C# 学习笔记(11)蓝屏小工具 加载界面参考 C# Winform 现代化扁平化启动界面设计https://www.bilibili.com/video/BV17E41147wM PS做一张图 70 ...
- 用python制作一款录屏小工具
天我想学习记录的内容是 -- 如何用python实现录屏. 1 写在前面 作为一名测试,有时候经常会遇到需要录屏记录自己操作,方便后续开发同学定位.以前都是用ScreenToGif来录屏制作成动态图, ...
- 推荐一款截屏翻译工具|截屏提取文字|划词翻译
推荐一款截屏翻译工具|截屏提取文字|划词翻译 大家有没有过这样的经历,搜索一篇阅读心得或者心得体会的时候,看到自己感兴趣的一篇文章,打算复制下来上交"任务"时,发现复制不了,连 ...
最新文章
- sscanf()的用法和例子
- sql array 数组基本用法(三)
- JavaScript——对象合并解决方案
- 82 个代码案例实践,带你学好 Python 机器学习
- 远程连接Oracle 数据库连接报错ORA-12638身份检索失败
- python找不到模块pyodbc_“import pyodbc”导致“没有名为pyodbc的模块”
- 基于JAVA+SpringBoot+Mybatis+MYSQL的在线心理测评管理系统
- 在Altium Designer中利用阵列粘贴功能快速绘制元器件封装
- NBA TopShot中勒布朗·詹姆斯的数字收藏卡以4.75万美元售出
- java modal_Java 源码-模态对话框(Modal Dialog Box)的实现
- H5 - template native模板 实现列表布局
- java从JDK里提取全球数据,包含国家(名称、二字代码、三字代码)、币种(名称和代码)、和语言种类的数据
- ong拼音汉字_儿童拼音汉字入门
- android translateanimation动画,Android 动画之TranslateAnimation应用详解
- 前端微信小程序面试题总结
- 推荐一本书:清华出版的《Modbus软件开发实战指南》
- 群联PS2251-03芯片量产成功详细图文教程
- 万字长文 | 数据分析师的机遇与挑战
- 2019计算机小高考成绩,小高考没过怎么办 2021小高考难度如何
- C盘扩容 ~直接磁盘管理器不能扩展~bitlocker加密解除
热门文章
- 立创开源zigbee2mqtt网关 简称:z2m
- 修复浏览器报错 Error in mounted hook (Promise/async): “[object Object]“
- 将 uniqueidentifier 值转换为 char 时结果空间不足
- notion自建服务器,秒杀传统型笔记!《Notion》等 5 款工具全方位对比,模块化笔记究竟强在哪?...
- 计算机专业教学改革方案,高校计算机专业现状分析及教学改革方案
- 百度 - 测开实习生面经
- 邂逅Node.js开发
- android取图片颜色代码,Android Palette 提取图片的主色调
- ROS基础一之ROS常用指令集合
- IIS7.5 FTP站点正确设置及启用用户隔离和绑定主机名(踩坑记)