UE5 Niagara 粒子系统零基础入门:从界面认识到第一个火焰特效
上周有位学员在群里问:“老师,我跟着教程做了个粒子发射器,结果粒子全飞到天上去了,怎么调都回不来。” 这个问题其实很典型——Niagara 作为一个节点化、数据驱动的粒子系统,和传统的 Cascade 完全不同。一旦理解了它的“组件式思维”,你会发现它比旧系统更灵活、更可控。今天我们就从零开始,一步步拆解 Niagara 的核心逻辑,并亲手制作一个带衰减、带飘散感的火焰特效。
一、Niagara 的“三层结构”:发射器、粒子、渲染
打开 UE5.3(本文基于 5.3.2 版本),在内容浏览器右键 → FX → Niagara System。你会看到三个选项:空白系统、从模板创建、从现有发射器创建。我们选第一个。
创建后双击打开,你会看到 Niagara 编辑器的主界面。左侧是系统预览,中间是发射器堆栈,右侧是参数面板。对于初学者,最容易混淆的是“发射器”和“粒子”这两个层级。
1. 发射器(Emitter) vs 粒子(Particle)
- 发射器:控制粒子如何产生、何时产生、产生多少。它像一个“水龙头”。
在发射器堆栈中,你会看到两个默认模块组:Emitter Spawn(发射器生成时触发一次)和 Emitter Update(每帧更新)。而粒子层级则有 Particle Spawn(每个粒子生成时触发一次)和 Particle Update(每个粒子每帧更新)。
2. 第一个操作:让粒子落下来
很多新手直接拖入一个“Sprite Renderer”就以为能出效果,结果粒子原地爆炸。正确做法:
1. 在发射器堆栈中,点击 +Add → Particle Spawn 下的 Initialize Particle 模块。这个模块负责设定粒子的初始位置、速度、生命周期。
2. 在 Initialize Particle 中,找到 Lifetime,设为 2.0(秒)。
3. 找到 Velocity,将 Z 轴设为 -50。这样粒子会向下移动。
4. 在 Particle Update 中,添加 Update Age 模块(让粒子随时间老化)和 Solve Forces and Velocity 模块(让速度生效)。
点击播放,你会看到粒子从原点下落。但注意——粒子只下落一次就消失了。这是因为发射器默认只生成一次粒子。
3. 让粒子持续生成
在 Emitter Update 中,添加 Spawn Burst Instantaneous 模块。默认参数是生成 1 个粒子。改成 Spawn Rate 模式(需要先移除 Spawn Burst,再添加 Spawn Rate 模块),Rate 设为 20。这样每秒生成 20 个粒子,持续生成。
—
二、火焰特效实战:从零搭建一个可用的火焰
火焰的核心是:粒子从底部升起 → 向上飘散 → 颜色从亮黄变暗红 → 大小先增大后缩小 → 最终消失。我们用 Niagara 的 模块化节点 来实现。
1. 创建基础发射器
1. 新建 Niagara 系统,命名为 `NS_Fire`。
2. 在发射器堆栈中,添加 Sprite Renderer(需要在最上方的“渲染”区域添加,而不是模块区域)。设置材质为 `M_FireParticle`(如果没有,可以创建一个 Unlit 材质,使用粒子颜色节点输出到 Base Color)。
3. 在 Particle Spawn 中添加 Initialize Particle,设置:
– Lifetime: 1.5~2.5(随机范围,用 Random Range Float 节点)
– Velocity: X=0, Y=0, Z=100~200(随机)
– Sprite Size: 10~30(随机,用 Random Range Vector 2D)
4. 在 Particle Update 中添加 Update Age,Solve Forces and Velocity,以及 Scale Color 模块��
2. 颜色与大小动画
火焰的颜色变化是核心。在 Particle Update 中,添加 Scale Color 模块。默认的曲线是线性渐变,我们需要修改:
– 时间 0.0:颜色 (1.0, 0.8, 0.2) 亮黄色
– 时间 0.5:颜色 (1.0, 0.4, 0.1) 橙红色
– 时间 1.0:颜色 (0.2, 0.0, 0.0) 暗红色
同样,添加 Scale Sprite Size 模块(需要单独添加),设置曲线:
– 时间 0.0:大小 0.3
– 时间 0.3:大小 1.0
– 时间 0.8:大小 0.8
– 时间 1.0:大小 0.0
这样粒子在生命周期内先变大再缩小,模拟火焰的跳动感。
3. 增加随机扰动
火焰不是笔直上升的,需要添加随机力。在 Particle Update 中添加 Add Velocity in Random Direction 模块,强度设为 20~50。或者更高级的做法:使用 Noise 模块(需要添加 Curl Noise Force),强度 50,频率 0.5,让粒子产生涡旋运动。
4. 优化性能与视觉效果
播放效果,你会看到一个动态的、颜色渐变的火焰。如果觉得太“直”,可以调整 Velocity 的 Z 轴范围,或者增加一个 Drag 模块(在 Particle Update 中添加 Damping,阻尼值 0.1),让粒子减速。
—
三、进阶技巧:用“事件”实现二次粒子(火星)
火焰燃烧时会有火星飞溅,这需要用到 Niagara 的事件系统。
1. 在发射器堆栈中,右键 → Add Event Handler,选择 Spawn Particles。
2. 事件类型选择 On Particle Death(粒子死亡时触发)。
3. 新建一个发射器(在系统层级中,点击 + → Add Emitter → 新建一个空白发射器),命名为 `Sparks`。
4. 在 `Sparks` 中,设置 Initialize Particle:Lifetime 0.5~1.0,Velocity 随机方向,大小 2~5。
5. 在 `NS_Fire` 的主发射器中,将事件处理器连接到 `Sparks` 发射器。
这样,每个火焰粒子消失时,会生成 1~3 个火星粒子。你可以调整火星的颜色(亮白到淡黄)和重力(添加 Gravity Force,强度 -200),让它们自然下落。
—
四、总结与进阶建议
通过这个案例,你应该掌握了 Niagara 的核心工作流:发射器控制生成 → 粒子控制行为 → 渲染器显示结果。火焰特效虽然基础,但涵盖了 Niagara 80% 的常用模块:随机数、曲线、力场、事件。
进阶方向:
1. GPU 粒子:在发射器属性中勾选 Use GPU Simulation,可以支持数万粒子,适合烟雾、爆炸。
2. 参数集 (Parameter Collections):将颜色、速度等参数暴露到蓝图,实现动态调整。
3. Data Interface:比如使用 Skeletal Mesh Data Interface 让粒子跟随角色骨骼。
如果你想让火焰更真实,可以尝试添加 SubUV 纹理动画,或者使用 Mesh Renderer 渲染为 3D 模型(比如小立方体)来模拟火焰的立体感。
—
常见问题 FAQ
Q1:粒子不显示,预览窗口一片空白?
A:检查渲染器是否添加了 Sprite Renderer 或 Mesh Renderer,并且材质是否有效。另外,确认粒子生命周期不为 0。
Q2:粒子飞得太快/太慢,怎么调?
A:在 Initialize Particle 中修改 Velocity 的数值。如果想统一调整所有粒子的速度,可以在 Particle Update 中添加 Scale Velocity 模块,用曲线控制。
Q3:火焰边缘有锯齿或闪烁?
A:在 Sprite Renderer 中,将 Blend Mode 设为 Additive(叠加模式),并开启 Sort by Depth。材质中建议使用 Unlit 模式,避免光照影响。
Q4:如何让火焰朝向摄像机?
A:在 Sprite Renderer 的 Alignment 中,选择 Facing Camera 或 Screen Alignment。如果是 Mesh Renderer,需要设置朝向约束。
Q5:Niagara 和 Cascade 哪个更推荐?
A:新项目建议全部使用 Niagara。UE5 已计划逐步弃用 Cascade。Niagara 的模块化设计更适合复杂特效,且支持 GPU 模拟和事件系统。
—
如果你在练习中遇到问题,欢迎在评论区留言。下一期我们将讲解“Niagara 中的 GPU 粒子:如何制作万点星光”。



评论(0)