Axıs
技能目录

10 · 引擎作战手册:Unity / UE5 / Godot

10 · 引擎作战手册:Unity / UE5 / Godot

每套引擎都有自己的"默认错误配置"。 本文件列出三套主流引擎在独立游戏语境下的必做设置、必避的坑、招牌技术选型。

通用:任何引擎都要做的 8 件事

  1. 定性能预算表(见 principles/02)
  2. 建母材质体系(3–5 个)
  3. 建导入预设(纹理/模型自动设置)
  4. 建资产命名规范 + 校验器
  5. 定单位/轴向/导出预设
  6. 定色彩空间(Linear)+ sRGB 规则
  7. 建光照模板场景
  8. 建画质档位矩阵 + 开关

A. Unity(URP / HDRP)

选型:URP vs HDRP vs Built-in

建议
URP 独立游戏默认选择。2D/3D 通吃,移动端支持好,Shader Graph 够用
HDRP 只在你需要高端 PC 写实画面时用。移动端不支持,学习成本高
Built-in 新项目不要用(除非依赖老插件)
Unity 6+ Render Graph、GPU Resident Drawer、GPU Occlusion Culling 有明显收益

必做设置(URP)

项 设置 原因
色彩空间 Linear 光照正确的基础
渲染路径 Forward+(光源多) / Forward(光源少)
SRP Batcher 开 母材质策略的直接收益
GPU Instancing 开 植被/散布
GPU Occlusion Culling 开(Unity 6)
Depth Priming PC:Auto / 移动:Disabled 避免 overdraw
Native RenderPass Vulkan/Metal/DX12 开 省带宽
阴影 软阴影按需;级联 2–4;距离 30–120m
Additional Lights 移动端 Per Vertex 或 Disabled
Terrain Holes 关
LOD Cross Fade 移动端关 用 alpha test 很贵
后处理 一个 Volume + 合并的 Uber Post
MSAA 前向渲染可用 2×/4×;移动端关

Shader 方案

需求 方案
常规材质 Shader Graph(节点式,美术也能改)
招牌技术 手写 HLSL 或 Shader Graph + Custom Function
全屏后处理 Custom Render Pass / Fullscreen Shader Graph
性能关键 手写精简 HLSL

URP Shader Graph 注意事项

  • 精度默认用 Half(在 Graph Inspector 设)
  • 用 shader_feature 而非 multi_compile(在 Blackboard 的 keyword 设置里选)
  • 通道打包:Rough/AO/Metal 合成一张 ORM,省 2 次采样
  • 用 Shader Graph 的都会自动支持 GPU Resident Drawer 的实例化声明;手写 HLSL 必须自己写 UNITY_INSTANCING_BUFFER_START/END,否则静默走慢路径

Shader 变体治理(Unity 重点坑)

Edit → Project Settings → Graphics → Shader Stripping
  ✅ Strip unused variants
  ✅ 剥离不需要的 Lightmap modes / Fog modes / Instancing variants
Player Settings → 预热:Shader Variant Collections
Debug:Window → Rendering → Shader Variant Log(查看变体数)

预算:总变体 ≤ 5000;首屏编译 ≤ 3s(否则做预热场景)。

Unity 特有坑

坑 解法
MaterialPropertyBlock 破坏 SRP Batcher 慎用;优先材质实例
场景层级过深 扁平化层级
每个敌人一个 Update() 用管理器统一驱动
Resources 文件夹滥用 用 Addressables
编辑器里 Profile 必须真机 Development Build
未剥离 shader 变体 打包 3 小时 + 内存爆
大量小纹理无图集 图集 + 通道打包
透明 UI 全屏叠加 减少全屏半透明 UI
Sprite Atlas 未启用 2D 必开

Unity 招牌技术候选

  • 自定义 Render Feature(如独特的描边/扫描线/扭曲)
  • Shader Graph 驱动的风格化材质(风雪/腐蚀/手绘笔触)
  • VFX Graph(GPU 粒子,大量粒子场景)
  • 2D:2D Light + 法线 + Palette Swap

B. Unreal Engine 5

选型与必做设置

项 建议
渲染 默认 Deferred;移动端 Forward
Nanite 默认不开(见 domains/08)
Lumen 默认不开,用烘焙 + Light Probe(见 domains/08)
虚拟纹理 大世界才开
阴影 Virtual Shadow Map 按需;CSM 更可控
TSR(时域超分) ✅ 推荐(UE5 的 TAAU,质量好)
前向渲染(移动端) 关掉大部分后处理
材质 Master Material + Material Instance(强制)

UE5 特有坑

坑 解法
材质节点过多导致编译慢 母材质控制节点数;用 Instance
材质实例参数太多 只暴露必要参数
Shader 编译(PSO)卡顿 PSO Caching + 打包时预编译
Nanite 让包体和磁盘暴涨 只在需要的资产上开
Lumen 在低端机不可用 有降级方案
蓝图里做重逻辑 移到 C++ 或简化
Tick 太多 关掉不需要的 Tick
大量 Actor 用 ISM/HISM(实例化静态网格)
光源数量过多 用烘焙
未使用资产进包 打包前扫描

UE5 招牌技术候选

  • Niagara(GPU 粒子 + 复杂模拟)
  • 自定义 Post Process Material
  • PCG 框架(程序化散布/生成)
  • Material Function 驱动的全场景参数化(风雪/腐蚀)
  • UE5 的 PCG 框架是独立游戏最划算的程序化工具(内置、免费、可控)

C. Godot 4

选型与必做设置

项 建议
渲染后端 Forward+(桌面) / Mobile(移动) / Compatibility(极低端/Web)
色彩空间 Linear
抗锯齿 TAA 或 FXAA;像素风关掉
光照 烘焙(LightmapGI) + Light Probe(ReflectionProbe / VoxelGI 按需)
SDFGI 谨慎(贵)
阴影 方向光 CSM;距离按需
材质 用标准材质 + Shader 参数;复杂效果用 Visual Shader 或 GLSL
物理 固定步长

Godot 特有坑

坑 解法
Forward+ 在移动端太贵 移动端用 Mobile 后端
GDScript 热路径慢 热路径用 C# 或 C++(GDExtension)
大量节点 用 MultiMesh / 合并
着色器编译卡顿(首次) 预热
纹理导入默认设置不合适 写导入脚本统一设置
2D 光照开销 控制 2D 光数量
像素风设置 见下

Godot 像素风设置

Project Settings → Rendering → Textures → Canvas Textures:
  Default Texture Filter = Nearest
Project Settings → Rendering → 2D:
  Snap 2D Transforms to Pixel = On
  Snap 2D Vertices to Pixel = On
Camera2D: Zoom 用整数;Viewport 尺寸 = 参考分辨率
纹理导入:Filter = Nearest,Mipmaps = Off

Godot 招牌技术候选

  • 自定义 CanvasItem / Spatial Shader(2D 效果极强)
  • 粒子系统 + 自定义 shader
  • 程序化生成(GDScript 灵活)
  • 2D 的灵活性是 Godot 的强项

引擎选型决策表

你的情况 选什么
2D / 像素 / 小团队 / 无预算 Godot 4 或 Unity(URP)
3D 风格化 / 需要大量插件 / 有 Unity 经验 Unity URP
3D 写实 / 需要 Nanite+Lumen / 有 UE 经验 UE5
移动端优先 Unity URP 或 Godot Mobile
Web Godot 或 Unity WebGL(注意包体)
团队只有 1 人且不会编程 Godot(GDScript 学习曲线最平缓)
需要大量现成插件 Unity
需要最好的画面上限且团队有经验 UE5

引擎迁移的警告

中途换引擎 = 项目死亡的主要方式之一。 迁移成本通常被低估 3–5 倍:不只是代码,还有资产重做、管线重建、性能重调、团队重学。 除非项目进度 < 20% 且有不可抗原因,否则绝不换。

自检清单

  1. 引擎选型的理由写下来了吗?(不是"因为我熟")
  2. 八件通用必做事做了几件?
  3. 该引擎的"默认坑"配置项都改了吗?
  4. Shader 变体/PSO 编译有预热吗?
  5. 真机 Development Build 测过吗?
  6. 招牌技术在该引擎里的实现路径清楚吗?有原型吗?
  7. 插件依赖清单有了吗?都在维护吗?
  8. 升级计划有吗?(量产期绝不升级)