3.1 Niagara 特效分层:把特效当"剧本"做

核心结论

新手做特效的常见方式是"一个 System 里塞所有粒子"——刀光、火花、烟雾、光晕全在一起。正确做法是分层:每个反馈时刻一个独立 System,按"剧本"(事件时间轴)依次触发。官方 Niagara 关键概念(https://www.wanxiangyundang.top/read/unreal-engine-5-8-docs/key-concepts-in-niagara-effect-cc37)是基础,我的增量是特效的项目组织学。

特效的四个层次(我的标准拆法)

层 内容 生命周期 例
T0 起势 预告性效果 100~300ms 武器拖光、手心聚气
T1 命中 瞬间高亮 1~3 帧 火花、白闪
T2 结果 物理感 200~500ms 飞溅、冲击波环
T3 余韵 氛围 1~5s 散烟、地面焦痕

为什么分层: - 每层可以独立换/调(命中爆点想更猛只改 T1)。 - 性能上容易分级(低画质砍 T3,命中不受影响)。 - 美术可以并行(不同人做不同层)。

触发方式:如何与玩法对接

不要在 GA 里直接 Spawn 一堆 System。做法:

  1. 数据表 DT_VFXSet:每个技能 -> 各层的 NS 资产引用。
  2. 自定义 AnimNotify(如 AnimNotify_VFX)里按记录名查表 Spawn。
  3. Spawn 位置:武器 Socket / 命中点 / 施法者三个来源由 Notify 参数指定。

这样美术改动画时间、策划改技能、特效师换资产,三方互不冲突——这就是"剧本化"的含义。

Niagara 项目组织

目录 内容
/VFX/Systems NS_System 资产(每层一个)
/VFX/Emitters NE_Emitter(可复用:火花、烟、拖尾)
/VFX/Scratch 临时试验场(定期清理)

复用原则:NE_(Emitter)是乐高积木,NS_(System)是拼好的套装。先做积木后拼套装,项目里 30 个 Emitter 能拼出 200 个技能特效。

常见坑与解法

坑 1:所有技能特效"看起来差不多"

原因:同一套 Emitter 复用到底,没有差异。

解法:按"元素/力量类型"做 4~6 套基础 Emitter 组(火/冰/雷/物理/暗),技能特效以组合比例区分(70% 物理 + 30% 火),而不是凭空做。

坑 2:特效在敌人身上"漂"(跟着 Socket 但方向不对)

原因:Spawn 时 Attach 但没处理旋转。

解法:Spawn 时 Attach to Component 选 Snap to Target,或用 Effect 的 Force Facing/Local Space。命中特效不要 Attach——用命中点 Spawn + 一个短衰减,避免跟着受击者动。

坑 3:满屏粒子找不到自己

原因:特效互相抢戏。

解法:攻击类特效上屏幕中面积上限(同时只允许 N 个在播),多余的自动不 Spawn。美术也很难反对这条——因为他们也看不清。

坑 4:联机时其他人看不到特效

原因:Spawn 在客户端执行,没复制。

解法:GameplayCue(GAS 内置)是正解:服务器通知,各端各自播。详见 0303 音效的相同处理。

相关节点速查

  • 概览:https://www.wanxiangyundang.top/read/unreal-engine-5-8-docs/overview-of-niagara-effects-fo-dddb;关键概念:https://www.wanxiangyundang.top/read/unreal-engine-5-8-docs/key-concepts-in-niagara-effect-cc37
  • 数据驱动:DT_VFXSet + AnimNotify
  • 网络化反馈:GameplayCue(GAS)

心得:我把项目的特效按四层重组后,一个有趣的变化是:策划提"我要更炸"时,我知道他要的是 T1 加码还是 T2 加码——沟通突然精确了。特效的工程化,本质是给"感觉"建立了词汇表。