UnityTips 之实用小工具UnityRecoder
UnityRecoder 是一款Unity Editor下的录屏工具,只能工作在编辑器模式下。支持Unity2017.1及以后的版本。这是官方提供的免费插件。
安装
安装方法有两种一种是从AssetStore安装,一种是从PackageManager安装,PackageManger内的版本更新频率要快,即PackageManager可以装到最新版的。
从AssetStore安装
- 按下Ctlr+9 打开AssetStore面板
-
在搜索框输入 Recoder 进行搜索
在搜索框搜索Recoder
-
点击进入结果中的UnityRecoder 进入下载界面,如果已经下载则显示是(Import)导入,如果没有下载则显示是(Download)下载。
已经下载 显示的是导入按钮 -
点击导入按钮等待导入
导入对话框 - 点击右下角导入按钮导入并等待编译完成即可。
从PackageManager进行安装
UnityRecoder 已经可以在包管理器的preview里进行安装.这里安装的版本要比 AssetStore 的更新。
-
依次在菜单栏点击Window->PackageManager,打开包管理器。
打开包管理器的方法
包管理器界面 -
在顶部Advanced下拉菜单内选中ShowPreviewPakcages
选中前
选中后,会多出许多包,这些都是预览版本,可能不稳定 -
在包列表里找到 UnityRecoder 并选中,然后点击右侧Install便可以进行安装。
安装,安装按钮 边上可以选择要安装的版本
使用
安装完成后,我们便可以在菜单栏 Window->General->Recoder->RecoderWindow
打开Recoder窗口的方法插件界面
功能说明:从上至下从左至右
-
START RECORDING: 开始录制,点击后便会开始录制,如果unity没有运行,则会自动运行。
-
Exit PlayMode:勾选后,当停止录制时会退出播放模式。
-
RecordMode:录制模式
录制模式1. Manual 手动 手动操作开始录制和结束录制。 2. 单帧 录制某一帧,需要在Frame内填入要录制的帧 3. 录制帧区间 要填入 Start 开始帧End 结束帧 单位帧 4. 录制时间区间 要填入 Start 开始时间 End 结束时间 单位秒
-
Add New Recorders: 添加新的Recoder(录制器)
可添加的录制器1. 录制动画 clip 2. 录制视频 3. 录制序列图 4. 录制 GIF 动画
-
FrameRate 帧率
帧率设置1. PlayBack a. Constant 固定值 b. Variable 可变值 2. Target 目标帧率 3. Cap 封盖
-
Recorder Type 录制类型
-
Format 格式
-
FileName 文件名
+WildCards 给文件名自动添加后缀
可自动添加的后缀1. <Recoreder> 录制器 2. <Time> 时间 3. <Take> 下方的take值 4. <Date> 日期 5. <Project> 项目名称 6. <Product> 产品名称(buildingsetting里面设置的) 7. <Scene> 场景名 8. <Resolution> 分辨率 9. <Frame> 帧数 10. <Extension> 扩展名
-
Path 存储路径
保存路径方式1. Project 以工程目录为根目录 2. AssetsFolder 以 Assets 为根目录 3. StreamingAssets 以 StreamingAssets 目录为根目录 4. PersistentData 以 PersistentData 目录为根目录 5. Temporary 以 Temporary 目录为根目录 6. Absolute 绝对路径
-
TakeNumber 录制次数计数器
-
Capture 采样位置指定
可用采样位置1. GameView 采样game视窗 2. Targeted Camera 指定的目标相机 3. 360View 360度全景采样 4. RT 图片采样 5. TextrueSampling 纹理采样
-
OutPutResolution 输出分辨率
输出分辨率1. MatchWindowSize 匹配目标窗口分辨率 2. 240p - Custom 是各个指定分辨率,其中 Custom 可以自定义分辨率
-
AspectRatio 长宽比
-
CaptureAudio 采样音频
-
Quality 采样画面质量
每种Recoder(采样器)的配置会有稍微的不同,但是大体配置都差不多,就不在一一赘述。
高级进阶-渲染带透明通道的序列帧
-
第一步 ,准备好你的渲染场景和要渲染的物体
测试场景
我的测试场景有一个相机,一个球,一个粒子,一个直射光。
将粒子的发射方式设置成prewarm,这样可以让粒子一开始运行就会出现在画面中,便于观察。实际录制可根据实际需求来做。
- 创建一个RenderTexture用作渲染载体,将创建好的 RT 赋给相机的RenderTex
这是时候点击我们RT 观察期预览窗口就可以看见相机的渲染结果,而game视窗已经没有了画面。
渲染效果到了RT上面按照上图的格式设置RT的参数。
- 去掉渲染的底色(天空盒),选择我们的相机,将clearFlags设置为SolidColor,将Background的颜色的Alpha通道设置为透明。
- 再观察我们的RT预览效果会发现天空盒没有了,但是背景色还存在,没关系,因为这里无法显示透明通道,所以还是会显示颜色,只要相机的背景色设置为透明就可以了。
- 打开Unity Recorder,并添加一个Image Sequence渲染器,文件格式选择png,勾选CaptuerAlpha,Capture选择RenderTextureAsset ,具体 配置如下图所示。
- 点击StartRecording,进行渲染,观察我们的渲染结果,我们发现我们输出的序列图只有球没有粒子。
为什么呢 ?我们返回Unity 观察一下我们的RT,显示他的A通道看一下。
观察RT A通确实只有一个球的透明通道。这是为何呢?原因是,我们创建 的粒子使用的是默认的材质球,这个材质的混合方式并不写入透明的透明值,所以粒子的alpha值在RT上没有被保存。
使用了默认的材质让我给我们的粒子新建一个材质,混合方式使用 alphablend的方式。
创建一个新的材质并使用AlphaBlend shader再次观察我们的RT的A通道,发现粒子的透明度也在里面了。
RT 的粒子有了 A 通道我们再渲染一次查看下序列图,可以发现半透明的粒子效果也在图上了。
序列图有了粒子的半透明效果需要注意,半透明的序列帧目前只能想到Alphablend的混合方式,add 或者是其他后处理例如bloom的效果被渲染到RT上效果不一定是正确的。