Emitter 内部结构:三段式管线

打开任意一个 Emitter 编辑器,左侧面板把模块分成几个组。这不是界面的随意划分,而是粒子生命周期的三个阶段,每个阶段只能做该阶段的事。

三段式的划分

组 作用 执行频率 典型模块
Emitter Update 管理发射器自身的状态 每帧一次 判断发射器是否结束、生成新的"爆发波次"
Particle Spawn 初始化新生的粒子 每个粒子诞生时一次 初始位置 / 速度 / 生命 / 颜色
Particle Update 更新存活中的粒子 每帧每粒子上执行 力、颜色渐变、大小变化、碰撞
(渲染) 把粒子画出来 每帧一次提交 Sprite / Ribbon / Mesh 渲染器

为什么要分这几段

一个最常见的错误是把"每帧都要做"的事写进了"只做一次"的组里。举例:某人在 Particle Spawn 里写了"把颜色设为随时间渐变的值",结果颜色永远不变——因为 Spawn 只在粒子出生时执行一次,之后再也不跑了。渐变必须放 Update。

反向的错误同样常见:把"生成时的随机初速度"写进 Update,导致每帧都重新随机一次速度,粒子原地疯狂抖动。

Emitter Update 的两个典型用法

用法一:控制发射器整体生命周期。 比如一个"间歇喷泉":Emitter Update 里放一个计数器,每累计 2 秒触发一次爆发(在 Spawn Burst 里发 50 个粒子),其余时间不发射。

用法二:波次生成。 配合 Spawn Burst 模块的次数计数,做"第一波 20 个、第二波 50 个"这种分阶段表现。

渲染器是独立配置的

渲染器(Renderer)不在三段式里,它是"数据怎么画成像素"的配置,和模拟解耦:

  • 同一套粒子数据,加 Sprite 渲染器是"圆形光点",加 Ribbon 渲染器是"拖尾光带",加 Mesh 渲染器是"翻滚的碎石";
  • 一个 Emitter 可以挂多个渲染器(同一批粒子既画 Sprite 又画 Ribbon)。

数据与渲染分离是 Niagara 的核心架构优势。想深入渲染器选项,可参考官方的 Niagara渲染器。