System 时间轴:编排多个 Emitter
System 编辑器最大的价值是时间轴:一条横向时间线,每个 Emitter 一条轨,控制它何时进入、循环几次、何时结束。
时间轴的三个核心概念
| 概念 | 位置 | 作用 |
|---|---|---|
| Emitter 轨道 | 主时间轴左侧列表 | 决定这个 Emitter 在整个 NS 里的播放区间 |
| 循环模式 | 轨道属性 | Single(单次)/ Infinite(无限循环)/ Custom Loops(N 次) |
| 开始 / 结束 | 轨道上的区间 | 拖动绿色 / 红色柄调整;可设延迟开始(-0.5s 之类) |
典型的编排案例:受击爆发
一个完整的受击特效在时间轴上长这样(总时长约 1.5 秒):
| Emitter | 进入时间 | 播放模式 | 说明 |
|---|---|---|---|
| 冲击波(NS 内嵌套) | 0.00s | Single | 扩散光环,0.3 秒 |
| 火星 | 0.00s | Single | 四散的小光点 |
| 烟雾 | 0.10s | Single | 缓慢上升扩散,1.2 秒 |
| 火光 | 0.00s | Single | 中心明亮闪光,0.2 秒 |
| 余烬 | 0.05s | Single | 几个缓慢下落的红点 |
注意:所有轨道都是 Single——一次性特效不要开循环,否则蓝图 Destroy 之后还在播(虽然组件销毁会终止整个 NS,但循环 NS 的"自动重播"会破坏单次语义)。
高级功能:System 内嵌套 System
UE5 允许把一个 NS 作为另一个 NS 的"子系统"嵌进来(在轨道上右键 → 添加嵌套 System)。这适合特效家族复用:一个"通用爆炸" NS 已经调好了,要做"更厉害的爆炸"时直接嵌进来再加一层冲击波即可,不用重新排五个轨道。
注意:嵌套层级不要太深。超过两层时,参数传递与调试都会变得难以追踪(改最里层的参数要透过两层暴露)。
播放控制的 API 术语对照
| 你想做的事 | 蓝图节点 | 备注 |
|---|---|---|
| 播一次就销毁 | Spawn System at Location(Auto Destroy) | 最常用 |
| 挂在角色身上 | Spawn System Attached | 跟随骨骼 / 插槽 |
| 手动开始 | NiagaraComponent → Activate | 成本低 |
| 停止 | NiagaraComponent → Deactivate | 不销毁组件,可复用 |
| 设参数 | Set X Parameter (Niagara) | Activate 之前设 |
| 判断播完 | On System Finished 委托 | 单次模式专用 |
"设参数要在 Activate 之前"是个高频坑:组件 Activate 之后的参数写入需要调用 ReinitializeSystem 或等下次播放才生效(视版本而定)。
