从 epic 虚幻商城中下载官方示例项目,这个项目里面有很多 UE 提供的功能示例,其中就包括 Niagra 的示例
找到 Simple_System 文件,这个就是最简单的 Niagara
Niagara 运作需要一系列脚本,包括蓝色、绿色、橙色三种
| 颜色 | 作用 |
|---|---|
| 蓝部分 | 它控制粒子系统的整个生命周期。系统生成控制系统生成的第一帧上发生的事情,系统更新是此后每一帧运行的逻辑。当数据从 system -> emitters -> particles 时,系统中的其他发射器和粒子都可以访问此处创建的属性 |
| 橙色部分 | 橙色部分将对系统中的每个发射器执行。每个发射器都有一个类似的生成和更新脚本。这就是我们控制系统中每个单独发射器的生命周期的地方。我在循环吗?我只玩一次吗?我可以产生粒子吗?如果是,有多少?这些是发射器脚本试图回答的问题类型 |
| 绿色部分 | 绿色粒子脚本将为发射器中的每个单独粒子独立运行。粒子生命的第一帧为粒子繁殖,此后每帧都会更新粒子。在粒子生成和粒子更新中都有许多内置行为(称为模块),可以通过每个脚本标题旁边的彩色“+”框访问,也可以右键单击模块并选择 "insert above" 或 "insert below" |
以 Emitter 的 Life Cycle Mode 为例,在 Simple_Emitter 粒子发射器中,有一个 Emitter State 粒子状态,可以通过这个设置 Life Cycle Mode 粒子的生命循环模式:System 或者 Self
| Mode | 作用 | 样例 |
|---|---|---|
| System | 跟随蓝色系统的 System State 中的 Loop Behavior 走 |
![]() |
| Self | 自行设置生命周期,选择之后会多出一些设置选项 | ![]() |
如果我们将 Simple_System 中 System State 的 Loop Behavior 设置为 Once, Loop Duration 设置为 1,可以得到如下效果
| 设置后 | 设置前 |
|---|---|
![]() |
![]() |
可以观察到,设置后的发射器跟着 System 的设置,在 1s 之后便不再发射例子
若此时,将 Emitter State 的 Life Cycle Mode 设置为 Self,并将 Loop Behavior 设置为 Infinite 就又能得到之前无限发射的效果了
为什么需要设置粒子发射器的 Life Cycel Mode 跟随 System 走呢?
Emitter State 的 Life Cycle Mode 是用来确定发射器的生命周期是由自身还是由所属的系统管理的
如果选择 System,那么发射器的循环、存在时间和消亡都会跟随系统的设置。这样做的好处是可以提高优化程度,避免不必要的计算和资源浪费
如果选择 Self,那么发射器可以独立控制自己的生命周期,可以设置不同的循环模式、循环时长、循环延迟和非活动响应。这样做的好处是可以增加灵活性和创造性,可以实现不同的效果
如果存在多个粒子发射器,并且生命周期相同,可以直接设置与 System 相同即可
那么如何创建粒子发射器呢?
直接在蓝图中右键即可创建粒子发射器
UE 提供一些粒子发射器的模板,可以自己尝试;同时也可以创建空的粒子发射器,自行设置
首先就是基于 Empty 模板创建一个发射器
分析表现效果,从起点发射粒子,粒子向上移动,并且粒子的大小会周期性变化(从大到小,再到大,最后变小),粒子的透明度也会周期性变化
在 Emitter Update 中添加 Spawn Rate
SpawnRate 可以配置每秒生成的粒子数目
Niagara 系统中 Emitter Update 是发射器组的一个阶段,它会在发射器被激活的每一帧中触发。Emitter Update 的触发频率取决于游戏的帧率,也就是每秒的帧数 (FPS)。一般来说,FPS 越高,Emitter Update 触发的频率就越高,反之亦然
Emitter Update 阶段的作用是更新发射器的状态和属性,比如位置、旋转、缩放、速度、加速度等。Emitter Update 阶段中的模块可以读取和写入发射器命名空间中的参数,也可以读取系统、引擎和用户命名空间中的参数。Emitter Update 阶段还可以创建和使用数据接口,从外部数据源中提供数据
在粒子生成(Particle Spawn)的时候添加速度,此时会出现上图右边的报错,这需要添加一个解算器,直接点击第一个 Fix Issue 即可
| 属性名 | 作用 |
|---|---|
| Lifetime Mode | 粒子生命时间类型,随机或者指定 |
| Lifetime | 粒子生命时间 |
| Color Mode | 粒子颜色模式,不设置、指定颜色,随机颜色区间 |
| Position Mode | 粒子位置模式,可以不设置、指定绝对世界坐标、指定相对偏移 |
| Mass Mode | 粒子质量模式,可以不设置(默认值1)、指定质量、随机质量 |
因为粒子的渲染是 Sprite,所以设置 Scale Sprite Size
通过设置变化曲线,可以定义粒子的大小变化
通过添加 Scale Color 可以设置透明通道
通过上图的设置,可以将粒子的透明通道值变化通过曲线的方式来设置