粒子系统 ParticleSystem
目前正跟随官网 Junior Programmer 课程学习。
前一段时间学习到的一些内容,将分别纪要。
1.粒子系统
在 Junior Programmer 课程的第 3.4 章节左右,首次接触 Unity 的粒子系统。
我们实际上做的事情比较简单:
- 声明一个
ParticleSystem类的变量 - 将一个粒子资源文件添加至 Scene 中,拖放其位置、调整旋转角度至恰当;
- 在
Inspector中拖放该粒子资源至相应变量处 - 在需要播放粒子特效时,使用
Play()方法播放粒子特效 - 在需要停止粒子特效时,使用
Stop()方法停用粒子特效
脚本调用示意如下:
1 | using System.Collections; |
以上。
2.深入了解
在 Unity Document 中对 ParticleSystem 的描述是:
ParticleSystem 的脚本接口。功能强大、用途广泛的 Unity 粒子系统实现。
常规参数
粒子系统的常规参数保存在一个特殊的主模块中。在 Inspector 中,这些参数显示在所有其他模块上方:

在脚本中,可以通过 ParticleSystem.main 访问这些参数。
模块效果乘数
每个模块都有一些特殊的乘数属性,利用这些属性,您可以在不编辑曲线本身的情况下更改曲线的整体效果。这些乘数属性全部以它们影响的曲线命名 - 例如,ParticleSystem.emission.rateMultiplier 控制 ParticleSystem.emission.rate 在给定系统中的整体效果。
常量值的简写表示法
对于简单的常量值,参数支持简写表示法。要为参数设置常量值,只需为其指定一个数字。无需在 ParticleSystemCurveMode.Constant 模式下创建 MinMaxCurve 或 MinMaxGradient 对象。
例如,下面的语句:
1 | ParticleSystem.emission.rate = new ParticleSystem.MinMaxCurve(5.0f); |
应写成:
1 | ParticleSystem.emission.rate = 5.0f; |
性能注意事项:在粒子模块上设置属性时,设置会立即传递到本机代码。这样可以提供最佳的性能。也就是说,在模块结构上设置属性时,不会在脚本中设置需要重新设置回粒子系统的内容;一切都是自动完成的。
另请参阅:Particle。
2.1 常用变量
如下:
| 变量 | 说明 |
|---|---|
| isEmitting | 确定粒子系统是否发射粒子。当粒子系统的发射模块已完成、已暂停或已使用 Stop 和 StopEmitting 标志来停止该系统时,粒子系统可能停止发射。可以调用 Play 来恢复发射。 |
| isPaused | 确定粒子系统是否已暂停。 |
| isPlaying | 确定粒子系统是否在播放。 |
| isStopped | 确定粒子系统是否已停止。 |
| particleCount | 当前粒子数(只读)。 |
| time | 播放位置(以秒为单位)。 |
有大量删减。
2.2 公共函数
常用的公共函数如下:
| 公共函数 | 说明 |
|---|---|
| Clear | 删除粒子系统中的所有粒子。 |
| Emit | 立即发射 count 个粒子。 |
| IsAlive | 粒子系统是否包含任何存活的粒子,还是会产生更多粒子? |
| Pause | 暂停系统,因此不再发射新粒子,也不再更新现有粒子。 |
| Play | 启动粒子系统。 |
| Stop | 使用提供的停止行为,停止播放粒子系统。 |
有大量删减。
继承成员暂不涉及。
注
在 Unity Document 中对 AudioSource 的描述要复杂的多,详细了解可参考以下路径:
以上。