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。做法:
- 数据表
DT_VFXSet:每个技能 -> 各层的 NS 资产引用。 - 自定义 AnimNotify(如
AnimNotify_VFX)里按记录名查表 Spawn。 - 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 加码——沟通突然精确了。特效的工程化,本质是给"感觉"建立了词汇表。
