# Niagara发射器生命周期管理
## 生命周期概述
Niagara发射器的生命周期管理系统控制着发射器的运行状态、循环行为和终止条件。良好的生命周期配置对于创建性能优化的特效至关重要。
## 生命周期模式 (Life Cycle Mode)
决定谁来计算发射器的生命周期值(循环、年龄和死亡)。
| 选项 | 说明 | 适用场景 |
| ---------- | ---------------------- | ----------- |
| **System** | 由拥有发射器的系统计算生命周期并传递给发射器 | 多发射器协同工作的场景 |
| **Self** | 由发射器自身计算生命周期 | 独立运行的发射器 |
> 💡 **优化提示**: System模式通常是性能优化的首选,因为它减少了重复计算。
![[pic/Niagara-EmitterState-LifeCycleMode.png]]
## 非活动响应 (Inactive Response)
决定发射器自身进入非活动状态时会发生什么。
| 选项 | 说明 | 适用场景 |
| ------------ | --------------------- | ----------- |
| **Complete** | 让现有粒子完成生命周期后才销毁发射器 | 需要自然消散的效果 |
| **Kill** | 立即销毁发射器及其所有粒子 | 需要立即终止的特效 |
| **Continue** | 发射器停止生成新粒子但不死亡,直到系统终止 | 可能需要重新激活的效果 |
![[pic/Niagara-EmitterState-InactiveResponse.png]]
## 循环行为 (Loop Behavior)
控制发射器如何循环和终止。
### Infinite (无限循环)
- **Loop Duration**: 循环持续时间
- **Recalculate Duration Each Loop**: 每次循环时重新计算持续时间
![[pic/Niagara-EmitterState-LoopBehavior-Infinite.png]]
### Once (单次循环)
- **Loop Duration Mode**:
- **Fixed**: 固定持续时间
- **Infinite**: 无限持续时间
![[pic/Niagara-EmitterState-LoopBehavior-Once.png]]
### Multiple (多次循环)
- **Loop Count**: 循环次数
- **Loop Duration**: 每个循环的持续时间
- **Recalculate Duration Each Loop**: 每次循环重新计算持续时间
![[pic/Niagara-EmitterState-LoopBehavior-Multiple.png]]
### Loop Delay (循环延迟)
循环之间的延迟时间,用于创建间歇性效果。
![[pic/Niagara-EmmiterState-LifeCycle-LoopDelay.png]]
## 可扩展性 (Scalability)
控制发射器的性能相关设置。
### Scalability Mode
- **System**: 由系统控制可扩展性设置
- **Self**: 由发射器自身控制可扩展性
```mermaid
flowchart TD
A[发射器创建] --> B{生命周期模式}
B -->|System| C[由系统计算]
B -->|Self| D[自身计算]
C --> E{循环行为}
D --> E
E -->|Infinite| F[无限循环]
E -->|Once| G[单次循环]
E -->|Multiple| H[多次循环]
F --> I{非活动响应}
G --> I
H --> I
I -->|Complete| J[完成粒子生命周期]
I -->|Kill| K[立即终止]
I -->|Continue| L[停止生成但不死亡]
```
# Niagara发射器循环行为详解
## 循环的基本概念
在Niagara中,发射器的"循环"指的是**发射器生成粒子的一个完整周期**。这与我们平常理解的编程循环类似,但专门应用于粒子生成过程。
简单来说:
- 一个循环是发射器生成和管理粒子的一个时间段
- 循环持续时间(Loop Duration)决定这个周期有多长
- 循环行为(Loop Behavior)决定发射器会执行多少个这样的周期
## 循环行为选项解析
### Infinite (无限循环)
当设置为Infinite时,发射器会不断重复其循环,直到被外部强制停止。
**实际案例**: 想象一个持续燃烧的火炬。火焰需要不断生成新粒子,没有自然终止点,所以使用Infinite模式。
- **Loop Duration(循环持续时间)**: 例如设置为2秒,意味着每2秒完成一个生成周期
- **Recalculate Duration Each Loop(重新计算每个循环的持续时间)**: 如启用,可能第一个循环是2秒,第二个循环随机变为1.8秒,然后2.2秒...这样火焰看起来会更自然
### Once (单次循环)
发射器只执行一个循环,然后进入非活动状态。
**实际案例**: 一次性爆炸效果。爆炸发生一次,然后结束。
- **Loop Duration Mode**:
- **Fixed(固定)**: 循环持续固定时间,例如3秒,意味着爆炸效果总是精确持续3秒
- **Infinite(无限)**: 尽管只有一个循环,但持续时间无限,直到手动终止。这适用于需要手动控制结束的特效
### Multiple (多次循环)
发射器执行指定次数的循环,然后进入非活动状态。
**实际案例**: 心跳视觉效果,需要跳动特定次数。
- **Loop Count(循环次数)**: 例如设置为5,意味着心跳效果会跳动5次
- **Loop Duration(循环持续时间)**: 每次跳动持续的时间,例如0.8秒
- **Recalculate Duration Each Loop**: 如启用,每次心跳可能略快或略慢,增加自然感
### Loop Delay (循环延迟)
循环之间的等待时间。这适用于Multiple和Infinite模式。
**实际案例**: 闪烁的信号灯。
- 如设置Loop Duration为0.5秒,Loop Delay为1秒,灯会亮0.5秒,然后熄灭1秒,再亮0.5秒...
## 图解说明
假设我们设置一个发射器:
- Loop Behavior: Multiple
- Loop Count: 3
- Loop Duration: 2秒
- Loop Delay: 1秒
时间线将是:
```
0s 2s 3s 5s 6s 8s
|----循环1----|--延迟--|----循环2----|--延迟--|----循环3----|
```
在每个循环期间(0-2s, 3-5s, 6-8s),发射器会根据其设置生成粒子。在延迟期间(2-3s, 5-6s),发射器会暂停生成新粒子。
## 循环与发射率的关系
需要注意的是,循环行为与发射率(Spawn Rate)是不同的概念:
- 循环控制的是发射器的整体生命周期
- 发射率控制的是在活动期间每秒生成多少个粒子
例如,一个循环持续5秒,发射率为10/秒的发射器,在一个循环中会生成约50个粒子。
## 应用场景示例
1. **持续环境效果**(如瀑布、火焰):
- Loop Behavior: Infinite
- Loop Duration: 较长(如4-5秒)
- Recalculate Duration: 启用(增加自然变化)
2. **一次性效果**(如爆炸、冲击波):
- Loop Behavior: Once
- Loop Duration Mode: Fixed
- Loop Duration: 效果需要的精确时间
3. **周期性效果**(如脉冲、心跳):
- Loop Behavior: Multiple或Infinite
- Loop Duration: 每个脉冲的持续时间
- Loop Delay: 脉冲之间的间隔
4. **随机爆发效果**(如烟花):
- Loop Behavior: Multiple
- Loop Count: 爆发次数
- Recalculate Duration: 启用
- Loop Delay: 可变(增加随机性)
理解循环行为对于创建既视觉上吸引人又性能高效的Niagara特效至关重要。适当的循环设置可以确保粒子系统在合适的时间生成和结束,避免不必要的资源消耗。
#Niagara概念