在Unreal Engine(UE)项目开发流程中,烘焙与打包是两个极易混淆但核心用途截然不同的关键操作。二者贯穿项目优化与交付的核心环节,前者聚焦场景性能提升,后者指向最终产品落地,明确二者差异是高效完成UE项目开发、保障交付质量的基础。以下将从定义、场景、实操等维度,详细拆解二者的关键区别与内在关联。

核心目的:预计算静态/固定的场景数据,把运行时需要大量算力实时计算的效果(主要是光照、阴影、全局光照GI等)提前计算好并存储为静态资源(如光照贴图Lightmaps),核心是用存储空间换运行时性能。
作用范围:仅针对项目内的场景/关卡,是项目开发过程中的「优化步骤」,而非最终交付步骤。
UE中典型场景:
光照烘焙:计算静态光源对静态物体的光照、阴影、间接光照,生成Lightmaps贴图;
导航网格(NavMesh)烘焙:提前计算角色可行走的区域,运行时直接调用;
光照探针(Lightmass Importance Volume)烘焙:为动态物体提供间接光照信息;
反射捕获(Reflection Capture)烘焙:预计算静态环境的反射效果。
产物:生成.uasset格式的光照贴图、导航数据等,保存在项目的Content目录下,仍属于编辑态资源。
核心目的:将整个UE项目(包括代码、资源、烘焙后的静态数据、引擎运行时)编译、整合、封装成可在目标平台(Windows/Android/PS5等)独立运行的程序,核心是生成可交付的最终产品。
作用范围:针对整个项目,是开发完成后的「交付步骤」。
UE中典型流程:
编译项目C++代码(若有);
收集并优化所有资源(包括烘焙后的光照贴图、模型、材质等);
剔除编辑器相关的冗余资源/代码;
整合引擎运行时库、插件、配置文件;
生成目标平台的可执行文件(如Windows的.exe、Android的.apk)。
产物:独立的可运行程序包(如Windows下的XXX.exe+Content文件夹+引擎运行库),脱离UE编辑器也能运行。
在UE中,打包项目不会自动完成光照/导航等烘焙——如果直接打包未烘焙的项目,运行时会实时计算光照(性能极差,甚至卡顿),因此正确流程是:
调整场景/光照 → 烘焙光照/导航等静态数据 → 测试烘焙效果 → 打包项目 → 交付最终程序打开关卡,确保静态物体标记为「Static」、光源标记为「Stationary/Static」;
点击顶部菜单栏「Build → Build Lighting Only」;
等待Lightmass计算完成,场景中生成光照贴图;
烘焙完成后,在Content目录可看到自动生成的Lightmaps资源。
点击顶部菜单栏「File → Package Project → 选择目标平台(如Windows (64-bit))」;
选择输出路径,UE自动开始编译、整合资源、生成可执行程序;
打包完成后,打开输出文件夹,双击.exe即可脱离编辑器运行游戏。
UE中的烘焙:是针对场景的「性能优化操作」,核心是提前计算光照/导航等静态数据,产物仍在项目内,依赖编辑器;
UE中的打包:是针对整个项目的「交付操作」,核心是整合所有资源(包括烘焙后的结果)生成独立可运行程序,产物脱离编辑器;
烘焙是打包的前置优化步骤,未烘焙的项目打包后运行性能会严重下降。