虚幻Niagara特效
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/unreal-niagara-ud6m。
技能介绍
它解决什么问题
UE5 的粒子特效统一由 Niagara 承担,老的 Cascade 已经废弃。但 Niagara 的模型并不直观:一个 NS_ 系统里嵌着多个 NE_ 发射器,每个发射器又按 Emitter Spawn/Update、Particle Spawn/Update、Event Handler、Render 等阶段执行。搞不清这套层级,就容易写出“特效生成了但参数改不动”的代码——因为只有 User 命名空间 的参数才能被 Blueprint/C++ 写入。这个技能把层级、执行顺序和参数暴露方式梳理成一条可操作的工作流。
核心能力与关键步骤
- 理解层级:Niagara System(
NS_)是最终放置或生成的特效,内部包含一个或多个 Emitter(NE_,通常是发射器模板)。 - 用 Module 拼行为:Spawn Rate、Add Velocity、Gravity Force、Color over Life 等模块在各阶段内自上而下执行,后面的模块能读到前面写入的值,顺序敏感。
- 认清参数命名空间:System / Emitter / Particle 参数只在模拟内部有效;只有 User 参数暴露给
UNiagaraComponent,供 Blueprint/C++ 设置。 - 运行时生成:
UNiagaraFunctionLibrary::SpawnSystemAtLocation按世界坐标生成,SpawnSystemAttached绑定到组件或 socket(例如跟随枪口的火光),两者都返回UNiagaraComponent。 - 驱动与控制:通过返回的组件写入 User 参数(颜色、生成速率、目标点),并用
Activate()/Deactivate()控制开关。 - 验证:在 Niagara 编辑器预览和场景内检查表现,重点核对 bounds(尤其是 GPU 发射器),确认 cull 与销毁逻辑正确。
适用边界与注意点
- 材质/着色器制作是独立话题,交给 shader-programming;特效配套的音频属于 audio-design。
- 不要从 gameplay 代码设置 System/Emitter/Particle 参数,不会生效;先暴露到 User 命名空间。
- 网上大量 Cascade 教程已过时,Niagara 的 emitter/module 工作流并不相同。
- GPU Compute 发射器必须显式设置 Fixed Bounds,否则特效可能消失或 cull 异常。
- 用
bAutoDestroy = false生成的特效要自行管理组件生命周期,否则会无限循环。 - GPU 粒子数据不回读 CPU;需要 gameplay 响应的碰撞/事件应使用 CPU emitter,或走 Niagara 数据接口。
- Module 栈顺序错误会让 Force/Velocity 读到未初始化的零值,排查时先看模块排列。
C++ 侧需在 .Build.cs 中添加 Niagara 模块,并参考官方 “Overview of Niagara Effects” 文档与 UNiagaraFunctionLibrary / UNiagaraComponent API。
使用场景
- 在 UE5 项目中用 Blueprint 从枪口 socket 生成枪口火光,并让火光跟随枪管移动。
- 在 C++ 里按武器开火位置生成爆炸特效,并写入颜色、生成速率等 User 参数。
- 需要 gameplay 响应碰撞或事件时,改用 CPU emitter 而不是 GPU Compute 发射器。
- 排查特效参数改不动的问题,发现误把参数放在 Simulation 命名空间而不是 User。
适合人员
- UE5 gameplay 工程师,需要用 Blueprint 或 C++ 生成并驱动 Niagara 特效。
- 技术美术或特效师,正在搭建 `NS_`/`NE_` 资产并把参数暴露给玩法。
- 玩法程序,关注特效生命周期、cull、bounds 以及 GPU 边界的处理。
- 客户端技术,需要把特效、音效和玩法交互拆分到不同技能边界。