Unity 自带的 Recorder 插件官方名称是 Unity RecorderPackage Manager 里直接搜 Recorder 就能安装。它解决的“内录”问题很具体不装 OBS、不接第三方录屏软件直接在 Unity 编辑器里把 Game 视图画面、游戏运行时的声音或者画面加声音一起录成文件。这篇文章适合用 Unity 做游戏演示、做 BUG 复现视频、做宣传素材、做动画 demo以及需要快速导出游戏音频素材的同学。最值得关注的能力是它同时支持视频录制和纯音频录制音画同步由引擎内部处理基本不用手动对时间轴。下面按“安装、配置、单次录制、可控录制、排查、边界”的顺序拆一遍。1. 先理解“内录”在 Unity 里到底指什么1.1 Unity Recorder 是官方维护的包不是老式 Asset Store 插件很多刚进 Unity 生态的同学会把“自带插件”理解成项目里默认就有。实际上 Unity Recorder 需要通过 Package Manager 手动安装但它属于 Unity 官方维护的包所以可以看作是官方自带、随装随用的内录方案。它和 Asset Store 上那些第三方录屏插件的区别在于它直接面向“帧采样”和“音画同步”这两个游戏录制场景设计接口和编辑器面板都是官方维护的不会出现插件更新跟不上 Unity 版本的问题。从功能覆盖上看Unity Recorder 主要提供这么几类录制器Movie Recorder把 Game 视图或指定 Camera 的画面录成 MP4、WebM 视频可以同时录入游戏音频。Audio Recorder把游戏内部正在播放的声音录成 WAV 文件不走外部录音设备。Image Sequence Recorder连续输出 PNG、JPEG 序列帧适合后期合成或抽帧检查。Animation Recorder记录场景对象的 Transform 动画导出成 Unity Animation Clip适合做动画对比和版本调试。GIF Recorder直接生成 GIF 动图适合快速分享到聊天窗口。说白了它的价值在于把“打开 OBS 录屏 → 再剪辑软件抽帧 → 再单独对音频”的老流程压缩成编辑器里的一个按钮。尤其当你只需要录一段 UI 交互、一个角色动作、或者一个音效的时候Recorder 的启动成本远低于外部工具。1.2 为什么说它适合“内录”而不是“外录”外录通常是录屏幕或录麦克风会把桌面其他窗口、鼠标光标、系统提示音全部带进去。内录则只采集 Unity 内部渲染的 Game 视图和内部音频总线没有桌面杂质。同时它录制的是游戏逻辑真正在跑的状态。你进入 Play Mode 后摄像机、动画、粒子、UI、音效都在实时执行录出来的就是玩家真正会看到的内容。这也是我推荐优先用它的原因不需要摆好外部录屏窗口的位置也不需要担心屏幕分辨率影响素材。不过要注意边界如果需求是录“我自己说话的声音”或者录桌面上的其他软件Unity Recorder 帮不上忙那是外部录音方案的事。2. 安装 Recorder 包环境和前置条件2.1 版本要求和安装入口在动手之前先确认三点基础条件Unity 版本建议 2019.4 或更高。老版本虽然也能从旧仓库装但功能不全界面差异明显。打开 Package Manager 后左上角来源切换成“Unity Registry”不要停留在“My Assets”。搜索框输入 Recorder找到 Unity Recorder 官方包点击 Install。安装完成后菜单栏会出现 Window General Recorder Recorder Window。如果包里找不到 Recorder常见原因是包列表拉取慢或者网络代理异常先等加载完成再重试搜索。老项目如果依赖列表被手动清理过也可能看不到这时候可以手动打开 Packages/manifest.json在 dependencies 节点加上{ dependencies: { com.unity.recorder: 4.0.2 } }这里的版本号要以你 Unity 版本兼容的范围为准我上面只是一个示例。加完保存后让编辑器回到前台刷新Package Manager 会自动解析。2.2 编辑器环境 vs 打包后的 Player这里必须先说一个边界Unity Recorder 是编辑器功能不是运行时组件。也就是说你在编辑器里点 Play 录制完全可行但如果你把游戏打包成 Windows exe 或 Android apk然后在游戏里点按钮自己录像Unity Recorder 不能直接随包运行。Player 内录需要你自己的屏幕捕获、硬件编码或第三方 SDK那属于另一条技术路线。所以如果你的目标只是“开发阶段录制演示视频、生成音频素材”Recorder 完全够用。如果你的目标是“发布版本内置录屏按钮”建议换方案不要在 Recorder 上继续投入时间。3. 用 Recorder Window 快速录制第一段视频3.1 打开 Recorder Window 并添加录制器第一次上手我建议直接用 Recorder Window它是最接近“傻瓜式”的入口打开 Window General Recorder Recorder Window。点击左上角的 Add Recorder选择 Movie。在右侧配置输入源、输出路径和参数。点击 Start Recording 按钮编辑器会进入 Play Mode 并开始录制。想结束时点击 Stop Recording文件会自动写入输出目录。这里有几个关键配置项逐个说清楚。3.2 输入源选择Game View、Targeted Camera、Render Texture 的区别Movie Recorder 的 Input 有多种选择最常见的是这三种Game View录制当前 Game 视图渲染出来的画面。适合绝大多数项目UI 和相机内容都会包含。Targeted Camera指定某台 Camera只录这台相机的画面忽略其他相机叠加。Render Texture录制一张 RenderTexture 上的内容适合你已经做了画面合成的项目。我一般会先选 Game View。因为它的结果和你在编辑器里 Play 时看到的基本一致排查问题最快。如果你的镜头带跟随逻辑比如角色移动时摄像机自己在追Game View 会把跟随结果原样录下来不需要额外处理。如果录出来画面和预期不一样再切换到 Targeted Camera 检查对应相机的清除标志、渲染层级和裁剪设置。3.3 输出格式MP4、WebM 怎么选Movie Recorder 支持的主要视频容器是 MP4 和 WebM。MP4H.264通用性最好Windows、macOS、手机、剪辑软件都能直接打开。推荐优先选它。WebMVP8/VP9文件体积相对小但 Windows 自带播放器不一定支持常用浏览器或 VLC 验证。如果你的目标平台是 Android、Web 端或者想控制文件体积可以试 WebM常规录 demo 直接 MP4。注意 MP4 编码在少数 Linux 发行版环境下可能因为系统缺少编码器导致生成失败遇到这种问题先换 WebM 验证是不是编码器问题。4. 视频录制参数逐个看分辨率、帧率、质量怎么取舍4.1 分辨率不是越大越好录制分辨率默认会取 Game 视图分辨率也可以手动指定宽度和高度。我建议按这个顺序测试先用当前 Game 视图分辨率或较低分辨率录 5 秒。确认文件生成、能打开、画面无异常。再切到目标分辨率比如 1920x1080 或 2560x1440。为什么不要一上来就录 4K因为录制本身会占用 CPU/GPU 资源游戏逻辑还在实时跑。分辨率越高越容易出现掉帧、卡顿、甚至主线程阻塞。录出来的素材一旦出现掉帧后期很难救。此外如果你打算把素材剪辑到 1080p 的项目里录制时直接选 1920x1080 就够了。录 4K 再压回 1080p 并不会带来肉眼可见的清晰度提升只会让录制阶段更卡、文件更大。4.2 帧率设置24、30、60 的选择Recorder 的帧率设置很灵活常见选择有24 FPS电影感适合叙事镜头。30 FPS网络视频标准多数演示够用。60 FPS运动镜头、动作展示能保留流畅度但文件更大录制时性能压力更高。这里有个容易踩的坑如果游戏实际跑不到 60 FPS你又强制按 60 FPS 录结果不是“变流畅”而是录制器会重复采样或丢帧。你先打开 Stats 面板看实际帧率再决定录制帧率。如果游戏只能稳定跑 40 FPS录制选项选 30 FPS 通常更稳。如果需要慢动作镜头可以加大录制帧率比如 120 FPS但前提是游戏本身在目标分辨率下能稳定跑 120 FPS否则素材会抖动。4.3 质量参数和音频开关Movie Recorder 面板里有质量设置一般分为 Low、Medium、High本质是调节编码码率。质量越高码率越高文件越大录制时编码开销也越大。以演示为目的的话Medium 通常够用如果要投放高清渠道再考虑 High。同一页还会看到 Capture Audio 选项。如果要画面和声音一起录必须勾选它不然录出来的视频是无声的。这里特别提醒Capture Audio 录的是 Unity 内部的音频输出。场景里必须存在 Audio Listener并且 AudioSource 的音频确实在播放。如果你用了 Audio Mixer只要总输出最终被 Audio Listener 接收也能录进去。不需要把系统音量、麦克风之类的东西接进来。4.4 录制时的性能观察录制不是零成本操作。启动录制后建议同时打开 Stats 面板和 Profiler 观察帧耗时是否明显上升内存是否连续增长输出目录所在磁盘的写入速度是否吃满如果帧耗时上升很多先降低分辨率和帧率。如果内存持续增长检查是不是场景里有动态生成的对象没有释放这个问题和 Recorder 本身关系不大但会因为录制时长被放大。5. 纯音频内录只要声音时的配置5.1 添加 Audio Recorder 并设置输出格式很多项目的素材需求其实是“只要声音”。这时候用 Audio Recorder在 Recorder Window 点 Add Recorder选择 Audio。设置输出格式为 WAV。设定采样率默认 48000 Hz 通常够用。设定输出路径和文件名。点击 Start Recording进入 Play 模式开始录。这种方案的典型场景项目里有一套自制 BGM、环境音、语音台词你需要快速导出成可在音频软件里编辑的素材。不用“让声音外放 → 用录音软件采集 → 再降噪”直接内部捕获信号干净无底噪。5.2 音频录制注意点纯音频录制虽然简单但有几个边界要注意Audio Recorder 只录游戏内部声音不录麦克风输入。要做语音交互调试需要另接麦克风采集流程。录制期间如果游戏没有声音播放生成的 WAV 会是静音。先确认 AudioSource 在跑、Audio Listener 存在。采样率不必盲目拉高。48 kHz 对小项目通常足够。192 kHz 录出来的文件体积翻好几倍听觉差异基本可忽略。有的 Recorder 版本里Movie Recorder 也可以只开音频不要画面但那样拿到的是视频容器文件不如直接 Audio Recorder 输出 WAV 干净。按需选择。6. 用 Recorder Controller 做可控录制和批量录制6.1 为什么建议从 Window 迁移到 ControllerRecorder Window 适合临时录一段但它依赖人工点击开始和停止。如果你需要固定流程录制、重复录制多段镜头、或者同时录多个画面源更推荐 Recorder Controller。创建方式在场景里创建一个空 GameObject添加 Component搜索 Recorder Controller。它和 Recorder Window 的区别录制器配置存在场景或 Prefab 里不依赖编辑器面板人工操作。可以设置开始录制的帧或时间点停止录制的帧或时间点。方便多人协作场景打开就带着录制配置团队其他人不用重新设一遍。6.2 同时配置多个录制器和输出命名Controller 里可以挂多个录制器。比如一个录 Camera A 的画面一个录 Camera B 的画面一个录全局音频。运行时它们会同时启动、同时停止输出文件名里通过各自名称区分。文件名模板建议带上时间或序号避免每次录制覆盖同一个文件。Recorder 面板里的文件名支持占位符常见的有时间、日期、录制器名等具体占位符以你当前版本的提示为准。我的习惯是写成类似Shot_Time或Take_Take的结构多段素材一眼能看出录制顺序。批量录制时的另一个细节是输出路径。所有录制器最好不要混在一个文件夹里可以按场景或镜头拆分子目录否则后期整理素材会很痛苦。6.3 脚本控制的思路项目里有自动化需求时可以通过脚本调用 Recorder 相关 API 控制开始和停止。不同 Recorder 版本之间 API 有调整下面只是一个最简结构using UnityEditor.Recorder; using UnityEngine; public class SimpleRecorderControl : MonoBehaviour { private RecorderController recorderController; void Start() { var settings ScriptableObject.CreateInstanceRecorderControllerSettings(); recorderController new RecorderController(settings); } void Update() { if (Input.GetKeyDown(KeyCode.R)) { recorderController.StartRecording(); } if (Input.GetKeyDown(KeyCode.S)) { recorderController.StopRecording(); } } }注意这段代码只是演示控制思路实际录制还需要给 settings 添加具体的 MovieRecorderSettings 或 AudioRecorderSettings。动手前先查当前 Recorder 版本自带的 API 文档避免按旧版本写法踩坑。7. 常见问题排查录不上、黑屏、没声音、卡顿7.1 文件没生成先看这两个地方文件没生成的排查顺序看 Console 面板有没有报错。Recorder 出错会直接打出异常信息先读懂报错再动参数。看输出目录是否存在。默认是项目根目录下的 Recordings 文件夹如果权限不足或目录名称非法文件可能生成失败。如果文件生成了但是 0KB基本可以判断是录制过程中断常见原因是录制器配置异常或者点击停止前编辑器已经退出 Play Mode。7.2 录出来黑屏或白屏黑屏最常见的原因是输入源没有有效画面如果选了 Game View检查 Game 视图是否处于激活状态。有的项目关闭了 Game 视图的渲染录制结果就是黑的。如果选了 Targeted Camera检查摄像机是否渲染了内容比如被禁用、目标 tag 不对、或者被其他物体遮挡。检查摄像机 culling mask 和 clear flags某些设置下画面会变成纯色。先用 Game View 录一段做对照能快速定位是输入源问题还是相机问题。7.3 视频没声音逐项检查Movie Recorder 里是否勾选 Capture Audio。场景是否有 Audio Listener。AudioSource 是否在播放音量是否为 0。Audio Mixer 的总输出是否被转到无效通道。这几项都正常换 Audio Recorder 单独录一遍 WAV。WAV 有声音说明音频链路没问题问题在视频录制器的音频封装WAV 也没声音说明源本身就没声音。7.4 录制时卡顿、掉帧明显处理顺序降低录制分辨率先排除编码压力。降低录制帧率从 60 降到 30 观察。关闭不必要的后处理、实时阴影和反射单独录一次对比。使用 Stats 面板观察目标帧率确认游戏本身能不能跑稳。如果游戏本身只能跑 20 FPS你录 60 FPS 的素材只会得到一卡一卡的“伪 60”。这时候先把游戏优化到能跑稳再谈录制参数。常见瓶颈包括脚本里每帧 GC、粒子系统数量、UI 重建开销、后处理全开。这些属于常见的 Unity 游戏优化范围和 Recorder 无关但录制时会被放大体现出来。7.5 换了 Unity 版本后 Recorder 面板异常升级 Unity 后遇到 Recorder 面板空白或参数丢失先做两件事在 Package Manager 里把 Recorder 切换到与你当前 Unity 版本匹配的 verified 版本。重新检查场景里 Recorder Controller 的配置大版本升级可能改变了属性名或默认值。不建议项目在关键节点频繁跨大版本升级 Recorder先在小项目里验证兼容性再应用到主项目。8. 边界、替代方案和最后的建议8.1 哪些情况不要用 Unity Recorder把边界说清楚Recorder 是编辑器工具不能打包进正式游戏。发布版本的内录需求需要自己做采集或接第三方 SDK。它不录麦克风不录其他软件声音不是 OBS 的替代品。录制高分辨率高帧率视频时对性能有明显影响不适合在性能紧张的调试阶段长期开着。如果只是要一段很短的 UI 截图直接用截图工具比拉起 Recorder 更快。8.2 和外部录屏工具的简单对比维度Unity RecorderOBS / 外部录屏安装Package Manager 装官方包需要单独安装软件录制内容只录 Unity 内部画面和音频录整个桌面或窗口音画同步引擎内部同步基本零误差依赖采集设置偶尔有延迟麦克风不支持支持可在打包后使用不支持可以适合场景开发期素材、动画、音频导出发布演示、直播、系统级录制这个对比能帮你快速判断选哪个。8.3 我推荐的落地路径如果你刚接触它按这个路径走先用 Recorder Window 录 5 秒验证视频和音频都能出文件。确认输出格式能被你的剪辑软件或播放器打开。再根据需求添加 Audio Recorder导出需要的音频素材。有固定流程后迁移到 Recorder Controller把配置沉淀在场景里。每次换 Unity 版本或 Recorder 版本后重新测一遍最小录制流程因为大版本升级容易改面板参数。踩过几次之后会发现很多问题不是插件能力不够而是前置环境和录制源没有处理好。Game 视图有没有开、Audio Listener 在不在、输出目录是否可写、游戏实际帧率够不够这四个点确认完八成问题已经解决。先把单任务录稳再考虑批量和脚本控制这个顺序能省下不少排查时间。
