1. 这份清单到底在解决什么问题虚幻引擎这玩意儿刚上手的时候特别容易陷入一种状态功能明明就在那儿但你就是不知道它藏在哪个菜单里。我见过太多人包括我自己早期做一个简单的材质混合硬是在节点编辑器里翻了二十分钟最后发现只需要按住键盘上某个键拖一根线就搞定了。这类事情发生个几十次之后你就会开始有意识地记录一些“原来还能这样”的瞬间。这份清单就是这种记录的产物一百零一条每一条都是实际项目里踩过或者差点踩坑的地方。它适合谁看如果你已经能打开引擎、创建项目、拖几个Actor进场景但总觉得操作起来磕磕绊绊效率上不去那这份清单就是给你准备的。它不教你怎么从零做一个游戏也不讲什么高深的渲染管线原理它只做一件事把你日常操作里那些“本可以更快”的地方一个个揪出来。对于已经有一定经验的人来说这里面大概有三分之一是你已经知道的三分之一是你知道但经常忘记用的剩下三分之一是你压根没注意过的。不管哪种过一遍都不亏。我整理的时候刻意打散了顺序没有按模块分因为实际工作中遇到的问题本来就是跳跃的。你可能在调灯光的时候突然发现一个视口操作技巧在写蓝图的时候突然意识到某个节点可以简化。所以这份清单你不需要从头读到尾随便翻到哪条觉得有用就记下来用的时候能想起来就行。2. 视口操作与场景导航的隐藏技巧2.1 移动、旋转、缩放的效率翻倍法很多人用鼠标中键拖拽来平移视口用右键加WASD来飞行这没问题。但你可能不知道在视口里选中一个物体后按住Alt鼠标中键拖拽可以围绕这个物体旋转视角按住Alt鼠标右键拖拽可以推拉镜头距离。这个操作在检查模型细节的时候特别管用比你先飞过去再调整视角要快得多。还有一个更隐蔽的在透视视口里如果你按住鼠标右键然后滚动滚轮可以调整飞行速度。这个速度值会显示在视口左上角默认是4。做大型场景的时候把它调到8或者16做精细调整的时候降到1或者2来回切换非常顺手。我见过有人在大型场景里用默认速度飞了半天才到目的地其实滚一下滚轮就能解决。关于物体对齐End键可以把选中的物体直接贴到下方物体的表面上。这个在摆放道具的时候是神器比如你要把一堆箱子放到货架上一个个调Z轴坐标太蠢了选中箱子按End它自动落到货架表面。如果落下去的位置不对检查一下是不是选中的物体本身的原点不在底部这时候需要先在建模软件里把原点调好。2.2 视口显示模式的快速切换按AltG可以快速切换游戏视图这个大家都知道。但AltC和AltO可能就没那么多人用了。AltC是切换摄像机视图如果你场景里有多个摄像机按一次切一个做镜头预览的时候不用去World Outliner里找。AltO是切换正交视图做2D游戏或者需要精确对齐的时候很有用。还有一个组合CtrlShiftH可以隐藏当前选中的物体CtrlH可以取消隐藏所有。这个在场景物体太多、视口卡顿的时候特别管用。你可以先把遮挡视线的墙壁或者装饰物隐藏掉专心调里面的东西调完再全部显示出来。比一个个去Outliner里点眼睛图标快多了。注意隐藏操作只影响视口显示不影响渲染和游戏逻辑。但如果你在打包后发现某些物体不见了先检查一下是不是在编辑器里不小心隐藏了然后保存了。2.3 书签与视角保存虚幻引擎有一个书签系统按Ctrl数字键可以把当前视角存为书签按数字键可以快速跳回去。这个功能在大型场景里来回检查不同区域的时候简直是救命的。比如你在做一个城市街区可以把每个街区的关键视角存成书签按1跳到入口按2跳到广场按3跳到屋顶不用每次都手动飞过去。书签保存的是视角的位置和旋转不保存任何物体状态。所以你可以放心用不会影响场景内容。我一般会在做场景搭建的时候存五到六个书签分别对应不同的检查点每天开工先按一遍书签过一下整体效果心里有数了再开始干活。3. 材质编辑器里的省时操作3.1 节点操作的快捷方式材质编辑器里最常用的操作是连接节点但很多人不知道按住数字键1、2、3、4然后点击空白处可以快速创建常量节点、二维向量、三维向量和四维向量。这比右键搜索再输入要快至少三倍。我刚开始用的时候还傻乎乎地每次去右键菜单里找Constant后来看别人操作才发现数字键直接出。按住M键点击空白处创建乘法节点按住A键创建加法节点按住L键创建线性插值节点。这几个是材质里用得最频繁的记住之后基本不用再打开右键菜单了。还有按住U键创建纹理坐标节点按住T键创建纹理采样节点做贴图相关的工作时效率提升非常明显。连线的时候如果你要从一个节点的输出连到另一个节点的输入直接拖拽就行。但如果你想快速替换某根线的连接目标可以按住Ctrl键拖拽到新的输入口原来的线会自动断开。这个在调整节点逻辑的时候特别方便不用先删线再连。3.2 材质实例与参数组织做材质的时候一定要养成习惯把需要频繁调整的值暴露成参数。颜色、粗糙度、金属度、法线强度这些全部转成参数节点。这样你可以在材质实例里直接调不用每次都打开材质编辑器重新编译。编译一次材质在复杂场景里可能要等好几秒一天下来浪费的时间很可观。参数命名也要有规范。我一般用前缀加描述的方式比如T_开头的是纹理参数V_开头的是向量参数S_开头的是标量参数。这样在材质实例的列表里一眼就能找到想要的不用在一堆Parameter里翻。而且当材质参数多到几十个的时候没有命名规范基本就废了。还有一个技巧材质函数可以把常用的节点组合打包成一个节点。比如你经常需要做三平面映射那就把整个节点网络做成一个材质函数以后直接拖一个节点出来就行。材质函数可以带输入输出用起来跟内置节点一样。我自己的项目里有一个专门的材质函数库积累了大概二十多个常用功能新材质直接拼装省了大量重复劳动。3.3 实时预览与性能权衡材质编辑器右上角有一个预览窗口默认是一个球体。你可以把它换成平面、立方体、圆柱体甚至自定义网格体。做UI材质的时候换成平面更直观做环境材质的时候换成球体或者立方体更能看出反射效果。切换按钮在预览窗口左上角点一下就能选。预览窗口的实时更新功能在调复杂材质的时候可能会拖慢编辑器。如果你觉得卡可以关掉实时更新手动点预览窗口里的更新按钮。但大多数情况下开着也没事除非你的材质里有大量纹理采样或者复杂计算。实操心得做材质的时候经常需要对比不同参数的效果。我的做法是复制一份材质实例把两份实例并排放在场景里调整参数的时候直接看场景里的效果比在预览窗口里看更准确。预览窗口的光照环境和实际场景往往有差异特别是做PBR材质的时候。4. 蓝图系统的效率提升细节4.1 节点搜索与快速创建蓝图编辑器里右键点击空白处打开节点搜索这是基本操作。但你可能不知道搜索框里可以直接输入加号、减号、乘号、除号来快速创建数学运算节点。输入出加法输入*出乘法比输入完整单词快得多。还有出相等比较!出不等比较和同理。如果你选中一个变量然后拖到空白处会弹出菜单让你选择Get还是Set。但如果你按住Ctrl键拖拽会直接创建Get节点按住Alt键拖拽直接创建Set节点。这个在频繁读写变量的时候能省不少点击。从函数的输出引脚拖出来搜索框会自动过滤出能接受这个类型的节点。这个大家可能都知道但反过来如果你从某个输入引脚往回拖搜索框会过滤出能输出这个类型的节点。做类型转换或者查找合适的数据源时很有用。4.2 蓝图调试与性能分析蓝图调试最常用的工具是断点和观察值。在节点上右键可以添加断点游戏运行到那里会暂停然后你可以查看所有变量的当前值。但很多人不知道的是你可以在断点暂停的时候把鼠标悬停在任意连线上查看那一刻的数据流。这个在排查逻辑错误的时候特别直观不用一个个变量去Watch。蓝图性能分析可以用stat blueprints命令打开。它会显示每个蓝图每帧的执行时间帮你找到性能瓶颈。我遇到过一个案例一个看似简单的Actor每帧都在做大量的字符串操作导致帧率掉了十几帧。用这个命令一查就定位到了改成事件驱动之后问题解决。还有一个蓝图原生化。在项目设置里可以开启蓝图原生化把蓝图编译成C代码。对于已经稳定不再修改的蓝图原生化之后执行效率会明显提升。但注意原生化之后就不能再在编辑器里直接改蓝图逻辑了需要重新编译。所以一般是在项目后期才做这个操作。4.3 蓝图组织与复用蓝图接口是实现多态的好东西。比如你有多种可交互物体门、开关、拾取物它们都需要响应“交互”这个动作。与其在每个蓝图里写一遍交互逻辑不如定义一个蓝图接口里面声明一个Interact函数然后每个蓝图去实现这个接口。这样你的角色蓝图只需要调用接口的Interact函数不用关心具体是什么物体。宏和函数的区别很多人搞不清楚。简单说函数有独立的执行上下文不能包含延迟节点宏是直接展开的可以包含延迟节点和流程控制。需要延迟或者需要访问外部变量的时候用宏需要封装独立逻辑的时候用函数。我一般把纯计算逻辑放函数里把带延迟或者需要操作外部状态的放宏里。蓝图继承可以大幅减少重复工作。做一个基类蓝图把公共的变量和逻辑放进去然后子类蓝图继承它只需要实现差异部分。比如做一个武器基类包含弹药、射速、伤害这些公共属性然后步枪、手枪、霰弹枪都继承它各自调整参数和特效。改公共逻辑的时候只需要改基类所有子类自动生效。5. 资产管理与项目组织5.1 命名规范与文件夹结构项目一开始就要定好命名规范不然后期改起来想死。我用的规范是类型前缀加下划线加描述。比如SM_开头的是静态网格体SK_开头的是骨骼网格体M_是材质MI_是材质实例T_是纹理BP_是蓝图WBP_是控件蓝图。这样在内容浏览器里搜索的时候输入前缀就能过滤出所有同类型资产。文件夹结构也要提前规划。我一般按功能模块分一级文件夹比如Characters、Environment、UI、Effects、Audio。每个一级文件夹下面再按资产类型分子文件夹比如Characters下面有Meshes、Materials、Textures、Animations、Blueprints。这样找东西的时候路径很清晰不会出现一个文件夹里混着几百个各种类型的资产。注意虚幻引擎的内容浏览器支持过滤器功能。你可以保存常用的过滤器比如“所有未使用的静态网格体”或者“所有大于2K的纹理”。定期跑一下这些过滤器清理无用资产能有效控制项目体积。5.2 资产迁移与引用管理资产迁移是团队协作里最常用的功能。右键资产选择“迁移”可以把资产及其所有依赖项一起复制到另一个项目。但要注意迁移过来的资产如果和现有资产重名会提示你是否覆盖。覆盖之前一定要确认清楚不然可能把别人改好的东西冲掉。引用查看器可以查看一个资产被哪些其他资产引用。在资产上右键选择“引用查看器”就能打开。这个在删除资产之前特别有用你可以先看看有没有别的东西在用这个资产避免删了之后出现丢失引用的错误。修复重定向器是处理资产移动后引用断裂的工具。如果你在内容浏览器里移动了资产的位置虚幻会自动创建重定向器来保持引用。但重定向器多了之后会影响加载速度需要定期修复。在文件夹上右键选择“修复文件夹中的重定向器”就行。5.3 版本控制与协作虚幻引擎内置了版本控制集成支持主流的版本控制工具。但不管用什么工具有几个原则是通用的二进制资产不要频繁提交因为每次提交都会产生一个完整的新版本仓库体积会爆炸。提交之前先更新避免冲突。提交信息要写清楚不要只写“更新”两个字过一个月你自己都不知道改了什么。对于团队协作锁定机制很重要。虚幻支持资产锁定一个人锁定某个资产后其他人只能读取不能修改。这个在多人同时编辑同一个关卡或者同一个蓝图的时候能避免冲突。但锁定也要及时释放不然别人一直等着。关卡分层是大型场景协作的好方法。把场景按功能分成多个子关卡比如地形、建筑、道具、灯光、特效各一个子关卡每个人负责自己的子关卡最后在持久关卡里组合。这样多人同时编辑不会互相干扰而且可以根据需要动态加载卸载子关卡。6. 渲染与光照的实用参数6.1 光照构建与优化静态光照在构建之前一定要检查光照贴图分辨率。默认的分辨率往往偏低导致阴影边缘模糊。在静态网格体编辑器的细节面板里可以调整。但也不是越高越好分辨率翻倍构建时间和内存占用都是四倍增长。一般小物件用64或128大物件用256或512就够了。光照构建质量在项目设置里可以调。预览级别构建快但质量低适合开发过程中快速迭代。最终发布之前一定要用高质量或者生产级重新构建一次。我见过有人开发全程用预览级别最后打包出来发现光照全是噪点返工重构建花了几个小时。距离场环境光遮蔽在项目设置里开启后可以给动态物体提供更好的环境光遮蔽效果。但会增加渲染开销移动端项目要谨慎。开启之后在后期处理体积里可以调整强度一般0.5到0.8之间比较自然。6.2 后期处理体积的调优后期处理体积里的参数非常多但常用的就那么几个。曝光部分把测光模式改成手动然后调整曝光补偿可以避免场景切换时亮度突然变化。** bloom** 部分调整强度和阈值控制高光溢出的效果。环境光遮蔽部分调整强度和半径增加接触阴影的层次感。颜色分级部分可以调整整体色调。我一般会稍微降低一点饱和度提高一点对比度让画面更有电影感。但不要调太过不然美术风格会跑偏。胶片颗粒可以加一点点掩盖一些渲染瑕疵但多了会显得脏。实操心得后期处理体积的参数调整最好在游戏视图下进行不要用编辑器视图。因为编辑器视图的光照和游戏视图有差异在编辑器里调好的效果在游戏里可能完全不一样。按G键切换到游戏视图然后调整参数所见即所得。6.3 材质性能与渲染开销材质复杂度是渲染开销的大头。在材质编辑器的统计面板里可以看到指令数指令数越高渲染开销越大。一般场景材质控制在100条指令以内角色材质可以放宽到200条。超过300条的材质就要考虑优化了。纹理采样是另一个开销大户。每个纹理采样都有成本移动端尤其敏感。能用一张图搞定的不要用两张能用低分辨率搞定的不要用高分辨率。纹理流送可以在项目设置里开启让引擎根据距离动态加载不同分辨率的纹理有效控制显存占用。半透明材质的渲染开销比不透明材质高很多因为需要排序和混合。能用不透明加遮罩实现的不要用半透明。如果必须用半透明尽量控制半透明区域在屏幕上的占比避免全屏半透明。7. 常见问题与排查技巧实录7.1 编译与打包常见错误“无法编译找不到某个模块”是最常见的错误之一。通常是因为修改了C代码后没有重新生成项目文件。解决方法是关闭编辑器删除项目目录下的Binaries和Intermediate文件夹然后右键.uproject文件选择“生成项目文件”重新编译。“打包失败资产引用丢失”通常是因为有资产引用了不存在的东西。用引用查看器检查报错的资产找到丢失的引用并修复。有时候是因为资产迁移时漏掉了依赖项重新迁移一次完整的就行。“打包后运行崩溃”可能是着色器编译问题。检查项目设置里的着色器编译选项确保打包时包含了所有需要的着色器变体。如果用了自定义着色器确认它们被正确包含在打包配置里。7.2 性能问题排查速查表症状可能原因排查方法解决方案帧率突然下降某个蓝图每帧执行大量操作stat blueprints改成事件驱动或降低执行频率显存占用过高纹理分辨率过大或数量过多stat memory降低纹理分辨率或开启纹理流送加载时间过长资产过多或单个资产过大查看打包日志拆分关卡或优化资产画面卡顿着色器编译或垃圾回收stat unit预编译着色器或优化对象创建光照异常光照贴图分辨率不足或构建质量低检查光照贴图提高分辨率或重新构建7.3 编辑器操作常见困惑“为什么我的物体在游戏里不见了”检查一下是不是在编辑器里被隐藏了或者是不是被设置了“在游戏中隐藏”的标记。在细节面板的渲染部分可以找到相关选项。“为什么材质在编辑器里正常游戏里变黑”通常是光照贴图问题。检查该物体是否参与了光照构建或者是不是用了动态光照但没有环境光。也可能是材质里用了只在编辑器下有效的节点。“为什么蓝图编译报错但找不到错误”尝试清理蓝图编译缓存。在蓝图编辑器里选择“编译”菜单下的“清理并重新编译”。如果还不行关闭编辑器删除Saved文件夹里的蓝图缓存重新打开。避坑技巧遇到任何奇怪的问题第一步永远是重启编辑器。很多临时性的显示错误或者状态异常重启就能解决。第二步是检查日志日志文件在Saved/Logs目录下里面通常有详细的错误信息。第三步是搜索社区你遇到的问题大概率别人也遇到过搜一下通常能找到答案。8. 一些零散但好用的杂项技巧8.1 编辑器界面与快捷键F键可以聚焦到选中的物体这个大家都知道。但ShiftF可以在聚焦的同时选中所有可见物体做批量操作的时候有用。CtrlShiftF可以聚焦到所有选中物体让它们全部出现在视野里。CtrlTab可以在打开的资产编辑器之间切换不用去点标签页。CtrlW关闭当前资产编辑器CtrlShiftW关闭所有资产编辑器。做清理的时候很快。CtrlP打开资产搜索输入名字直接跳转。比在内容浏览器里一层层点文件夹快得多。支持模糊搜索输入几个字母就能找到。8.2 控制台命令精选stat fps显示帧率stat unit显示帧时间分解stat game显示游戏逻辑耗时stat render显示渲染耗时。这几个是性能分析的基本工具。r.ScreenPercentage 50可以把渲染分辨率降到50%用来测试低配设备的表现。r.ShadowQuality 0关闭阴影r.PostProcessAAQuality 0关闭抗锯齿用来排查是不是某个特性导致的性能问题。slomo 0.5把游戏速度降到一半用来观察快速动画的细节。slomo 1恢复正常。做动画调试的时候很有用。8.3 项目设置里的关键选项自动曝光在项目设置里可以关闭。如果你的场景光照条件稳定关闭自动曝光可以避免亮度波动。在渲染部分的默认设置里可以找到。抗锯齿方法有几种可选。时间抗锯齿效果最好但会有拖影快速近似抗锯齿性能最好但边缘会有锯齿。根据项目需求选择一般PC项目用时间抗锯齿移动端用快速近似。虚拟纹理可以大幅降低纹理显存占用但需要显卡支持。在项目设置里开启后纹理会自动转换为虚拟纹理格式。对于大世界场景特别有用。8.4 学习资源与社区官方文档永远是最权威的但有时候写得比较简略。遇到文档不清楚的地方去社区论坛搜一下通常有更详细的解释和示例。视频教程适合入门但深入的东西还是要看文档和源码。示例项目是学习的好材料。官方提供的示例项目涵盖了各种功能下载下来拆开看能学到很多实际的做法。特别是那些做了好几年的示例项目里面的代码和资产组织方式很值得参考。版本更新日志一定要看。每个版本都会有一些新功能和改进有些能直接提升你的工作效率。我一般会在新版本发布后花半个小时过一遍更新日志看看有没有值得尝试的东西。9. 关于效率这件事的一些个人体会做了这么多年项目我越来越觉得效率提升不是靠某一个惊天动地的技巧而是靠几十个这种小技巧的叠加。每个技巧可能只省几秒钟但一天下来、一个项目下来累积起来就是巨大的差距。这份清单里的每一条都是我或者我身边的人在实际工作中验证过的不是从文档里抄来的。但我也要提醒一句不要为了用技巧而用技巧。有些操作虽然快但如果你的肌肉记忆还没建立起来强行用反而会出错。我的建议是每次只挑两三条刻意练习几天等变成条件反射了再加新的。贪多嚼不烂这个道理在学引擎上同样适用。最后再分享一个小习惯我会在项目目录里放一个文本文件专门记录这个项目里用到的所有技巧和踩过的坑。每次遇到新问题解决了就记一笔下次遇到类似情况直接查。这个文件比任何教程都管用因为它是针对你自己的工作流定制的。你也可以试试坚持记一个月回头看看会发现收获比想象中大得多。