发射器属性
在 Niagara 里,Emitter 负责控制粒子生成的规则和行为。不同的 Emitter 属性决定了如何发射粒子、粒子如何模拟、计算方式等。
发射器
本地空间(Local Space)
控制粒子是否跟随发射器(Emitter)移动。
✅ 启用(True)→ 粒子位置跟随发射器移动(适用于喷火器🔥、火焰喷射等)
❌ 禁用(False)→ 粒子位置固定在世界空间(适用于烟雾💨、下雨🌧等)
确定性(Determinism)
让粒子模拟结果一致,即相同输入总是产生相同的粒子行为。
✅ 启用 → 粒子系统每次运行都会生成相同的效果
❌ 禁用 → 粒子系统每次运行可能会有随机变化
内插生成(Interpolated Spawning)
在低帧率时,平滑插值粒子生成,避免抖动。
✅ 启用 → 粒子会在两帧之间平滑生成(适用于高精度特效)
❌ 禁用 → 低帧率下,粒子可能会不均匀生成(会有断层)
模拟目标(Sim Target)
决定粒子在哪个处理单元上进行模拟计算。
CPU Sim → 在 CPU 上计算(适用于复杂逻辑粒子)
GPU Sim → 在 GPU 上计算(适用于超大规模粒子,如爆炸💥、烟雾💨)
计算边界模式(Fixed Bounds Mode)
设置粒子系统的边界(Bounds),用于剔除(Culling)优化。
动态Dynamic → 自动计算粒子边界(适用于大范围粒子)
固定Fixed → 手动设置固定边界(适用于小范围粒子)
可编程 → 从外部设置ID
需要固定 ID(Requires Persistent IDs)
为每个粒子分配一个唯一 ID,确保它们在生命周期内保持不变。
✅ 启用 → 适用于 粒子需要保持独特状态(如跟踪单个粒子的运动)
❌ 禁用 → 一般粒子不需要唯一 ID
分配模式(Allocation Mode)
控制粒子如何分配内存。
自动估算(Automatic Estimate) → 系统自动计算需要的最大粒子数,并动态调整。
手动估算(Manual Estimate) → 开发者手动设置 Niagara 估算的最大粒子数,Niagara 仍然会根据情况动态调整。粒子数在运行时变化极多(例如由于用户参数)且发生诸多重新分配现象时,此模式将十分有用。
固定数量(Fixed Allocation) → Niagara 预先分配一个固定的粒子数量,不允许动态调整。
发射器依赖(Emitter Dependencies)
用于指定某个发射器的执行顺序。
要保留的属性(Attributes to Preserve)
指定哪些粒子属性在 Emitter 被禁用时仍然保留。适用于:粒子残留效果(如烟雾慢慢消散),武器轨迹特效(如剑气在空气中残留)
模拟阶段循环(Sim Phase Loop)
允许 Emitter 在模拟阶段循环执行,而不是只运行一次。让粒子系统不断重复某个行为,多阶段粒子(如火焰先变成烟雾)
发射器更新
Emitter State 发射器状态
Life Cycle 生命周期
Life Cycle Mode(生命周期模式)
- System(系统控制)发射器的生命周期由粒子系统(Niagara System)控制,通常在 蓝图(Blueprint)或C++ 里管理。
- Self(自身控制) 发射器的生命周期由自身逻辑决定,如通过 Loop Behavior(循环模式) 和 Duration(持续时间) 设置。
Inactive Response(发射器停用响应)需要设置在生命周期模式为自身控制时才可以设置
决定 当发射器变为“无效”时如何处理(通常因 距离剔除(Culling)或优化策略 而无效)。
- Complete(完成)发射器允许当前粒子运行完生命周期,但不会生成新粒子。
- Kill(立即销毁)立刻清除 所有粒子,发射器也会被移除。
- Disable Tick(禁用 Tick 计算)发射器不会更新(Tick 停止),但已有粒子仍然渲染。
Loop Behavior(循环模式)
- Infinite(无限循环)发射器会无限循环,直到被手动停止。选择后可以设置Loop Duration 每过一定时间后,将进行一次粒子发射
- Once(一次)运行一次,直到完成后停止,在Loop Duration Mode里设置执行一次的发射器持续时间。
- Multiple (指定次数)比Infinite多了一个次数设置
Loop Duration Mode (循环持续时间模式)
当 Loop Behavior(循环模式) 设置为 Once(只运行一次) 时,会出现 Loop Duration Mode,它决定 发射器的持续时间如何计算。
- Fixed(固定时长)选择Fixed后,会出现Loop Duration选项用来设置固定持续时间,发射器状态按固定的时间来运行。
- Infinite(无限时长)发射器会一直运行,直到被手动销毁。
Loop Delay (循环延迟)
Loop Delay 控制 发射器在每次循环开始前的延迟时间,用于在循环播放时引入间隔,使特效不会立即重新开始,从而创造更自然的效果。适用于 Loop Behavior 设为 Count 或 Infinite 时,在 每次循环之间添加时间间隔。当 Loop Behavior 设为 Once 时,不会生效。如果有多个发射器,可以使用 Loop Delay 让它们错开时间播放。
Scalability(扩展)
Scalability Mode(可扩展性模式)
决定 发射器如何响应 Niagara System 的 LOD(Level of Detail)优化
- System 受 Niagara System 级别 LOD 控制(推荐用于大多数环境特效)。
- Self 独立管理自己的 LOD,不受 Niagara System 影响(适用于关键视觉特效,如魔法、火焰),在设置为Self后,将开启自定义设置的相关属性,以下属性会在设置为Self后出现。
- Enable Distance Culling(启用距离剔除)控制发射器是否会在超出指定距离后自动关闭,从而减少不必要的计算,提高性能。当发射器的距离超过“Max Distance”时,该发射器会被禁用(不再更新 & 渲染)。开启此选项后,可以设置MinDistance(最小距离)和MaxDistance(最大距离)。
- Spawn Count Scale(生成数量缩放)主要用于 动态调整粒子发射器的生成数量,以适应不同的性能需求或游戏场景,可以通过Spawn Count Scale 来整体调整粒子生成数量,并通过Spawn Count Scale By Distance实现通过和相机的距离调整粒子生成数量。
- Enable Visibility Culling(启用可见性剔除)Enable Visibility Culling 主要用于 优化 Niagara 粒子在屏幕外的计算,可以有效减少不必要的 GPU 和 CPU 负担,提高游戏性能。
- Visibility Cull Response(可见性剔除响应)Visibility Cull Response 控制当 Niagara 发射器被可见性剔除时(即屏幕外不可见),发射器如何响应。它的参数有:
选项 | 行为 | 适用场景 |
---|---|---|
Awaken | 发射器保持激活状态,不受剔除影响,粒子继续运行 | 需要在屏幕外仍持续播放的效果(如烟雾、火焰) |
Sleep and Let Particles Finish | 发射器进入休眠,但粒子继续自然消亡 | 需要自然衰减的粒子(如持续燃烧的火焰、烟雾) |
Sleep and Clear Particles | 发射器进入休眠,所有粒子立即消失,但不会销毁发射器 | 适用于屏幕外不需要存在的短时粒子(如 UI 特效) |
Kill Immediately | 发射器和粒子立即销毁,离开屏幕后不会恢复 | 适用于一次性粒子,如爆炸、子弹轨迹 |
Kill After Particles Finish | 发射器不再生成新粒子,但已有粒子会继续运行直到生命周期结束,然后销毁 | 适用于需要“自然结束”的效果,如火焰、能量残留 |
- Reset Age On Awaken(在唤醒时重置存在时间)控制发射器从休眠状态恢复时,是否重置生命周期。只有在开启Enable Visibility Culling才会显示此属性。如果你开启后,发射器从屏幕外重新进入到屏幕内时,将会重置生命周期,适用于爆炸,不适用于长时间显示的特效,比如燃烧的火焰,天气特效。
Spawn Burst Instantaneous(瞬时爆发生成)
当启用 Spawn Burst Instantaneous 时,Emitter 会在特定时间点一次性生成一批粒子,而不是逐渐生成。
- Spawn Count 控制 一次性生成多少粒子,数值越大,粒子密度越高。
- Spawn Time(生成时间)用于控制粒子在 Emitter 生命周期内的生成时间点。
- Spawn Probability(生成概率)0 - 1 之间,控制每次爆发时粒子是否一定会生成。
- Loop Count Limit(循环次数限制)设置多次生成粒子。