# 粒子系统概览

# 概述

粒子系统 Particle 是继承自MeshRenderer的 Component 组件,可挂载到 entity 上。粒子系统用于模拟一些视觉特效,如火花、刀光、雷电、云、雾、尘、雪、发光轨迹等。

粒子系统内设有不同的功能模块,可组合实现不同的粒子效果。粒子系统面板如下图:

image.png

可以点击下载工具新手引导,直接在工具中按流程学习。

# 组件概要

Particle -> MeshRenderer -> Component -> Object

# 仪表盘

image.png

粒子系统的仪表板如上图所示,其中Particle Player具有播放、停止播放粒子特效的功能,Particle Count表示当前的粒子个数。Playback Time表示从粒子系统开始播放到当前的时间。若勾选“仅播放所选中的粒子”表示每次只播放所选中的粒子,否则,将播放该粒子及其所有的子粒子组件。

# 烘培模式

使用烘培模式,可极大提升粒子系统在真机上的运行性能。

烘培模式的限制:

  • 当 emitter 模块中的 looping 属性为 true 且 common 模块中的startLifeTime 大于 duration 时,不支持使用烘培模式。
  • 当 common 模块的 simulationSpace 属性为 Wrold 时,不支持使用烘培模式。
  • 若使用烘培模式,不允许在运行时对粒子系统的属性进行修改。
  • 若使用烘培模式,无法保证粒子发射时的位置、速度的完全随机。
  • 在工具中,若从“不使用烘培模式”修改为“使用烘培模式”,需保存后,再次打开该场景才可生效。

# 组件模块

模块名 说明 类型
common 通用模块,用于设置基础属性 (必要模块) engine.Particle.ParticleCommon
emitter 发射器模块,用于设置发射数量以及发射时机相关属性 (必要模块) engine.Particle.ParticleEmitter
renderer 渲染模块,用于设置类型和渲染相关相关属性 (必要模块) engine.Particle.ParticleRenderer
emitterShape 发射器形状模块,用于设置粒子发射器形状位置大小等属性。 engine.Particle.ParticleEmitterShape
subEmitters 子发射器模块,用于设定子发射器,可在粒子生命周期的某一阶段发射其他粒子。 engine.Particle.ParticleSubEmitters
rotationByLife 旋转模块,用于设置粒子生命周期中旋转变化相关的属性。 engine.Particle.ParticleRotationByLife
sizeByLife 大小模块,用于设置粒子生命周期中大小变化相关的属性。 engine.Particle.ParticleSizeByLife
speedByLife 速度模块,用于设置粒子生命周期中运动速度变化相关的属性。 engine.Particle.ParticleSpeedByLife
speedLimitByLife 速度限制模块,用于设置粒子生命周期中运动速度限制相关的属性,与speedByLife模块一起决定粒子的速度大小。 engine.Particle.ParticleSpeedLimitByLife
colorByLife 颜色模块,用于设置粒子生命周期中颜色变化的属性。 engine.Particle.ParticleColorByLife
textureSheetAnimation 贴图动画模块,用户设置贴图动画相关属性。 engine.Particle.ParticleTextureSheetAnimation
noise 噪声模块,用于添加扰动粒子运动。 engine.Particle.ParticleNoise

# 控制粒子播放代码示例

const particleComp = entity.getComponent(engine.Particle);
particleComp.play(); // 开始播放该粒子组件以及所有子节点的粒子组件
particleComp.stop(); // 停止播放该粒子组件以及所有子节点的粒子组件