粒子系统是Unity里一个功能强大模块化设计的组件,它可以让开发者能够通过组合与配置不同的功能模块,来模拟各种复杂的动态视觉效果,像是爆炸、火焰、雨雪、云雾等等,这些特效背后往往都是粒子系统在高效运作。接下来我将尽量详细的介绍一下粒子系统。

我使用的是Unity2021.3.41的内置粒子系统(Particle System),下面是每个模块的名称及详细功能
| 模块名称 | 主要功能描述 |
| Main Module 主模块 | 控制粒子系统的全局属性,如生命周期、速度、数量等 |
| Emission Module 发射模块 | 控制粒子的发射规则,数量、时间、周期等 |
| Shape Module 形状模块 | 定义粒子发射器的形状和体积、初始发射方向 |
| Velocity over Lifetime Module 生命周期速度模块 | 控制粒子生命周期内的速度变化 |
| Limit Velocity over Lifetime Module 生命周期速度限制模块 | 模拟空气阻力,限制粒子生命周期内的速度 |
| Inherit Velocity Module | 让粒子在生成时,继承其父对象(或特定对象)的运动速度,从而使粒子效果与运动的物体保持自然的相对运动关系 |
| href="https://docs.unity.cn/cn/current/Manual/PartSysLifetimeByEmitterSpeedModule.html" Lifetime by Emitter Speed Module | 根据粒子生成瞬间发射器的速度,来动态调整每个粒子的初始生命周期 |
| Force over Lifetime Module 生命周期力模块 | 为粒子系统添加持续的外力,模拟风力、推力等物理效果 |
| Color over Lifetime Module 生命周期颜色模块 | 控制粒子在生命周期内的颜色和透明度变化,是实现粒子渐隐、变色的核心模块 |
| Color by Speed Module 速度着色模块 | 根据粒子的运动速度改变颜色,适合区分粒子运动状态 |
| Size over Lifetime Module 生命周期尺寸模块 | 控制粒子在生命周期内的尺寸变化 |
| Size by Speed Module 速度大小模块 | 依据粒子速度调整其尺寸大小 |
| Rotation over Lifetime Module 生命周期旋转模块 | 控制粒子在生命周期内的旋转行为,让粒子运动更具真实感 |
| Rotation by Speed Module | 让粒子的旋转角速度随自身运动速度动态变化 |
| External Forces Module 外部力模块 | 控制粒子是否受场景中的风区影响 |
| Noise Module 噪点模块 | 为粒子运动添加紊乱扰动效果,让粒子运动更自然 |
| Collision Module 碰撞模块 | 控制粒子与场景中碰撞体的交互,可设置粒子碰撞后的行为 |
| Triggers Module 触发器模块 | 用于实现粒子和场景中指定碰撞器的交互 |
| Sub Emitters Module 子发射器模块 | 允许粒子在出生、碰撞或死亡时发射其他粒子系统 |
| Texture Sheet Animation Module 纹理序列帧模块 | 将纹理图集或精灵图,拆解为连续的动画帧并逐帧播放,让粒子不再是单一静止图形 |
| Lights Module 灯光模块 | 粒子实时光照控制 |
| Trails Module 轨迹模块 | 为粒子创建拖尾效果 |
| Custom Data Module 自定义数据模块 | 给粒子添加自定义的数据流,实现定制化的视觉效果 |
| Renderer Module 渲染器模块 | 指定粒子的材质、渲染模式等 |
这是粒子系统的核心全局模块,默认展开状态,控制整个粒子系统的基础规则和粒子初始状态,所有粒子效果都会受其影响。

| 属性 | 功能 |
| Duration | 粒子系统单次运行的总时长,非循环状态下到时间后会停止发射粒子 |
| Looping | 循环属性,勾选后,系统将在Duration结束后重新启动并重复该循环 |
| Prewarm | 如果启用此属性,粒子系统会在启动瞬间就生成一批已经运行了Duration时长的粒子,不会从无到有慢慢生成( Looping 也启用时才有效) |
| Start Delay | 延迟生成属性,勾选后,系统将延迟一段时间发射(以秒为单位) |
| Start Lifetime | 粒子的生命周期(也是以秒为单位) |
| Start Speed | 粒子生成的初始速度 |
| 3D Start Size | 分别控制每个轴的初始大小 |
| Start Size | 每个粒子的初始大小 |
| 3D Start Rotation | 每个轴向的初始选择旋转角度控制 |
| Start Rotation | 每个粒子的初始旋转角度 |
| Flip Rotation | 粒子生成瞬间,控制粒子初始朝向的翻转概率 |
| Start Color | 粒子的初始颜色 |
| Gravity Modifier | 重力系数,控制粒子受到重力影响的强弱 |
| Simulation Space | 控制粒子运动的参考坐标系 |
| Simulation Speed | 控制粒子系统运行快慢速率,如1.0是正常速度,2.0是两倍速度 |
| Delta Time | 增量时间,scaled,受游戏缩放时间影响,Unscaled粒子不随游戏时间变化 |
| Scaling Mode | 缩放模式。如Hierarchy模式,粒子会受到自身和父级缩放影响;Local,仅受自身变换缩放影响,不受任何父级影响;Shape,仅影响粒子发射范围大小,但不影响粒子大小。 |
| Play on Awake | 激活时自动播放 |
| Emitter Velocity Mode | 定义了 “发射器的速度” 具体从哪个组件或逻辑获取 |
| Max Particles | 场景中最大粒子数 |
| Auto Random Seed | 勾选后每次播放会自动生成新的随机粒子,禁用后会使用固定的粒子 |
| Random Seed | 和Auto Random Seed搭配使用 |
| Stop Action | 用于定义粒子系统在停止发射粒子后对已生成粒子和粒子系统自身的处理逻辑 |
| Culling Mode | 控制粒子系统在超出相机视野时的行为 |
| Ring Buffer Mode | 当粒子数量达到 Max Particles时,是停止生成新粒子还是替换旧粒子 Disabled:达到最大粒子数后,停止生成新粒子,直至已有粒子消失(生命周期结束)、系统空闲出名额; Pause Until Replaced:达到最大粒子数后,新粒子暂不生成;当已有粒子消失时,立即生成新粒子填补空缺,且新粒子会 “继承” 被替换粒子的初始状态(位置、速度等)的 “时间进度”; Loop Until Replaced:达到最大粒子数后,直接替换系统中最早生成的粒子,新粒子以全新状态(初始位置、速度、颜色)替代旧粒子,旧粒子立即消失。 |
粒子系统的发射模块,主要控制粒子系统的发射频率、数量等。

| 属性 | 功能 |
| Rate over Time | 每秒发射的粒子数量。 有四种模式: Constant 默认模式:粒子系统以一个固定不变的速率持续发射粒子; Curve 曲线:编辑一条动画曲线,根据曲线动态调整发射率; Random Between Two Constants:在两个恒定值之间随机选一个,介于Min和Max之间的发射率; Random Between Two Curves:每个时间点在两条曲线之间随机选择一个发射率。 |
| Rate over Distance | 根据发射器的移动距离控制粒子发射数量。 也是四种模式,基本和Rate over Time里四种模式类似。 |
| Bursts | 在粒子系统的Duration时间内,设置一个或多个时间节点,瞬间发射大量粒子。 爆发点事件有五个参数: Time:爆发触发的时间点,以秒为单位,可正可负,负代表提前触发; Count:爆发时一次性发射粒子数量,有四种模式,和上面Rate over Time类似; Cycles:循环次数,爆发事件在粒子系统生命周期的触发次数; Interval:多次爆发时,每次爆发的时间间隔; Probability:概率,爆发事件发生的概率。 |
定义粒子系统从什么形状的区域发射出来,发射方向,发射范围等。

| 属性 | 功能 |
| Shape | 粒子系统发射器形状,下拉选择粒子发射器形状,我使用的是2021.3.41版本,这个版本大概有13种发射器形状,包括球体、半球体、锥体、立方体等; |
| Radius | 半径属性,用于定义圆形或球形发射区域的大小; |
| Radius Thickness | 控制粒子发射区域占对应形状体积或面积的比例,仅对球体、半球体等带圆形或弧形的形状生效; |
| Arc | 弧长,控制环形发射区域的圆周角度范围,直接决定粒子的发射角度覆盖范围。 Arc下有两个参数,Mode和Spread Mode: Random模式,在弧形周围随机生成粒子; Loop模式:在弧形周围依序生成粒子,并在每个周期结束时循环回到起点; Ping-Pong模式:与Loop模式基本相同,不同之处在于每个连续循环的发生方向与上一个循环相反 Burst Spread模式:在形状周围均匀分布粒子生成位置,一般和Bursts搭配使用。 Spread: 弧形周围可产生粒子的离散间隔。例如,值为 0 表示允许在弧形周围的任何位置生成粒子,值为 0.1 表示仅在形状周围以 10% 的间隔生成粒子。 |
| Texture | 用于为粒子着色、控制粒子发射位置等 |
| Clip Channel | 配合Texture使用,通过纹理的指定通道“裁剪”粒子发射区域 —— 仅保留纹理通道数值满足条件的区域发射粒子,进一步精准控制网格表面的粒子分布,避免无关区域误发射 |
| Clip Threshold | 设定“粒子发射的通道数值门槛”—当纹理指定通道的数值(亮度、Alpha 值等)高于该阈值时,对应区域才会发射粒子,低于阈值的区域则被裁剪,实现发射区域的精准边界控制 |
| Color affects Particles | 粒子颜色受纹理颜色影响 |
| Alpha affects Particles | 粒子 Alpha 受纹理 Alpha 影响 |
| Bilinear Filtering | 让粒子在继承纹理信息(位置权重、颜色)时,采样更平滑 |
| Position | 调整粒子的发射器形状的位置 |
| Rotation | 旋转粒子发射器形状 |
| Scale | 调整粒子发射器形状的大小 |
| Align to Direction | 让粒子的“正面”(渲染朝向)自动对齐其初始运动方向 |
| Randomize Direction | 控制粒子初始运动方向偏移 |
| Spherize Direction | 将粒子方向朝球面方向混合,从它们的变换中心向外行进。设置为0时,此设置不起作用。设置为1时,粒子方向从中心向外(与Shape设置为Sphere 时的行为相同) |
| Randomize Position | 打破粒子在发射区域内的规整分布(如均匀排列、沿轮廓对齐),通过随机偏移让粒子位置更自然无序,避免机械感,适配自然现象或不规则特效需求。 |
控制粒子运动轨迹 “自然扰动” 的核心模块,通过模拟自然噪点(如气流、湍流、磁场干扰),让粒子运动从 “规整线性” 变为 “随机自然”。

| 属性 | 功能 |
| SeparateAxes (分离轴) | 对三个坐标轴分布设置参数,实现粒子变化效果 |
| Strength 强度 | 噪点对粒子的扰动力度 |
| Frequency 频率 | 噪点的“密集程度”(高频,扰动更细碎,低频,扰动更平缓) |
| Scroll Speed 滚动速度 | 噪点场的移动速度(模拟气流流动) |
| Damping 阻尼 | 保持噪声整体行为不变的前提下,能够对噪声场进行缩放 |
| Octaves 倍频 | 控制组合多少层噪声来生成最终效果 |
| Octave Multiplier/Scale 倍频乘数/缩放 | 控制新增噪声层的强度和频率缩放 |
| Quality 质量 | 选择噪声计算维度(1D/2D/3D),平衡效果与性能 |
| Remap & Remap Curve 重映射与曲线 | 将最终的噪声值重新映射到特定范围,以精确控制影响区间 |
| Position Amount 位置量 | 控制噪声对粒子位置的影响程度 |
| Rotation Amount 旋转量 | 控制噪声对粒子旋转速度的影响(度/秒) |
| Size Amount 尺寸量 | 控制噪声对粒子大小的影响程度 |
让粒子与场景中的其他物体发生交互,提升特效的真实感和表现力。

| 属性 | 功能 |
| Type | 选择碰撞是基于Planes(平面) 还是World(世界几何体) |
| Mode 碰撞模式 | Type为World时触发,选择碰撞发生在2D还是3D物理世界 |
| Dampen 阻尼 | 碰撞后粒子损失的速度比例,值越大粒子减速越明显 |
| Bounce 反弹 | 碰撞后粒子反弹的速度比例,值越大反弹越剧烈 |
| Lifetime Loss 生命周期损失 | 碰撞后粒子损失的生命周期比例,用于模拟碰撞后消失的效果 |
| Min/Max Kill Speed 最小/最大销毁速度 | 碰撞后,速度低于最小值或高于最大值的粒子会被立即销毁 |
| Collision Quality 碰撞质量 | 控制检测精度,从High(高精度)、Medium(中) 到Low(低),兼顾性能与准确性 |
| Collides With 层级设置 | 决定粒子只与哪些图层上的物体发生碰撞 |
| Max Collision Shapes 最大碰撞形状 | 粒子系统最多考虑的碰撞形状数量,超出的将被忽略 |
| Enable Dynamic Colliders 启用动态碰撞体 | 是否允许粒子与场景中的动态碰撞体发生碰撞 |
| Collider Force 碰撞力 | 粒子碰撞后对物理碰撞体施加的力的大小 |
| Multiply by Collision Angle | 启用后,粒子对碰撞体施加的力会根据碰撞角度进行缩放 |
| Multiply by Particle Speed | 启用后,施加给碰撞体的力会考虑粒子的速度。速度越快的粒子,产生的碰撞力越大 |
| Multiply by Particle Size | 启用后,施加的力会与击中碰撞体的粒子的面积(2D)或体积(3D)成比例。尺寸更大的粒子会产生更大的力 |
| Send Collision Messages | 启用后,粒子与碰撞体发生碰撞时,可以向相关游戏对象发送消息 |
| Visualize Bounds | 调试工具,用于在Unity的Scene视图中显示粒子系统的碰撞盒 |
根据粒子与场景中一个或多个碰撞体的交互来访问和修改粒子,从而实现各种有趣的效果。

| 属性 | 功能 |
| Inside | 当粒子位于碰撞体内部时触发的操作 |
| Outside | 当粒子位于碰撞体外部时触发的操作 |
| Enter | 当粒子进入碰撞体时触发的操作 |
| Exit | 当粒子离开碰撞体时触发的操作 |
| Collider Query Mode | 控制获取粒子与碰撞体交互的信息详细程度 |
| Radius Scale | 用于调整粒子碰撞边界的大小 |
| Visualize Bounds | 在Scene视图中显示每个粒子的碰撞盒子 |
让粒子的纹理图像像翻页动画一样播放,创造出火焰闪烁、昆虫振翅等生动效果。

| 属性 | 功能 |
| Mode | 选择动画模式:Grid(网格)或 Sprites(精灵图) |
| Tiles | 定义纹理在 X(水平) 和 Y(垂直) 方向上划分的网格数量 |
| Animation | 选择动画模式:Whole Sheet(播放整个表格)或 Single Row(播放单行动画) |
| Time Mode | 控制动画帧的采样方式:Lifetime(基于生命周期)、Speed(基于粒子速度)、FPS(固定帧率) |
| FPS | 控制序列帧动画的播放速度 |
| Start Frame | 指定粒子动画开始的帧 |
| Affected UV Channels | 指定粒子系统影响哪些UV流 |
可以将每个粒子作为一个动态的光源,发射光照到场景中。

| 属性 | 功能 |
| Light | 预设,使用该预设上的所有 Light 组件设置(如颜色、强度、范围、类型等)作为基础模板 |
| Ratio | 控制有多少比例的粒子会获得光源 |
| Random Distribution | 控制 Ratio 的选择方式,随机或者固定分配 |
| Use Particle Color | 是否将粒子的颜色应用于光源 |
| Size Affects Range | 粒子的尺寸是否影响光源的照射范围 |
| Alpha Affects Intensity | 粒子的透明度 是否影响光源的强度 |
| Range Multiplier | 控制光源范围在粒子生命周期内的变化 |
| Intensity Multiplier | 控制光源强度在粒子生命周期内的变化 |
| Maximum Lights | 限制单个粒子系统可以同时存在的最大光源数量 |
让粒子在运动时留下轨迹,常用于实现子弹拖尾、魔法光束、烟雾轨迹等效果。

| 属性 | 功能 |
| Mode | 选择拖尾的生成模式: Particle:每个粒子独立产生一条拖尾; Ribbon:将粒子按存活时间顺序连接成一条或多条"丝带"。 |
| Ribbon Count | 设定在整个粒子系统中要渲染的丝带数量 |
| Split Sub Emitter Ribbons | 在子发射器系统上启用时,来自同一父粒子的粒子将共享一条丝带 |
| Attach Ribbons to Transform | 为每条丝带添加一个额外的位置,将其连接到变换组件的位置 |
| Ratio | 设置有多少比例的粒子会拥有拖尾 |
| Lifetime | 拖尾顶点的存活时间,通常表示为粒子生命周期的倍数。时间越长,拖尾也越长 |
| Minimum Vertex Distance | 粒子必须移动超过此距离,拖尾才会添加一个新的顶点 |
| Die With Particles | 启用后,拖尾会随粒子的死亡而立即消失。禁用后,拖尾会继续存在直至自身生命周期结束 |
| Texture Mode | 控制贴图在拖尾上的应用方式: Stretch:将贴图拉伸覆盖整个拖尾; |
| Size affects Width | 启用后,粒子的尺寸将影响拖尾的宽度。粒子越大,拖尾越宽 |
| Size affects Lifetime | 启用后,粒子的尺寸将影响拖尾的生命周期 |
| Inherit Particle Color | 启用后,拖尾的颜色会与产生它的粒子颜色一致 |
| Color over Lifetime | 定义拖尾颜色在其依附粒子的整个生命周期内如何变化 |
| Width over Trail | 控制拖尾沿其自身长度的宽度变化 |
| Color over Trail | 定义拖尾颜色沿其自身长度如何变化 |
| Generate Lighting Data | 启用后,拖尾几何体将生成法线和切线,使得场景灯光和法线贴图能够影响拖尾,让其更好地融入三维环境 |
| Shadow Bias | 沿光线方向移动阴影,用于消除因拖尾的布告板几何体近似体积而产生的阴影瑕疵 |
粒子系统渲染模块,决定了粒子的基本形态。

| 属性 | 功能 |
| Render Mode | 粒子面对相机的方式: Billboard:所有粒子始终完全正面朝向相机。这是最常用和性能最高的模式,适用于烟雾、云、火焰等; |
| Material | 指定用于渲染粒子的材质。材质决定了粒子的颜色纹理、着色器、透明度混合模式等。必须指定一个材质,否则粒子不可见。 |
| Trail Material | 拖尾材质,如果启用了Trail模块,可以在这里为拖尾指定一个独立的材质 |
| Sort Mode | 决定粒子被渲染的先后顺序,主要影响透明效果的混合: By Depth:根据粒子到摄像机平面的深度排序渲染。 |
| Sorting Fudge | 影响粒子在整个场景中的渲染排序。值越小,粒子越晚被渲染,从而可能覆盖在其他透明物体之上。用于精细调整渲染层级 |
| Render Alignment | 在某些特定情况下(如粒子附着在骨骼上时)使用,通常保持默认的View即可 |
| Flip | 随机水平或垂直翻转粒子,用于增加视觉变化,避免重复感 |
| Enable Mesh GPU Instancing | 当粒子使用网格(Mesh)形态时,勾选这个选项,Unity会尝试通过一次绘制调用(Draw Call)渲染多个相同的网格粒子,从而显著提升运行效率 |
| Pivot | 调整粒子几何体的轴心点 |
| Visualize Pivot | 在场景视图中预览每个粒子的轴心点位置 |
| Masking | 粒子与UI元素的交互。 Visible Inside Mask:粒子只在Rect Mask 2D组件区域内可见; |
| Apply Active Color Space | 控制粒子颜色是否与项目的当前颜色空间设置保持一致 |
| Custom Vertex Streams | 自定义顶点流,可以将粒子系统的内部数据(如速度、生命周期等)传递给你自己编写的着色器,从而实现远超标准着色器的个性化视觉效果 |
| Cast Shadows | 粒子是否向其他物体投射阴影。 Off:不投射阴影(默认)。 |
| Shadow Bias | 沿光线方向移动阴影,用于消除因拖尾的布告板几何体近似体积而产生的阴影瑕疵 |
| Sorting Layer ID | 定义粒子系统位于哪个渲染层 |
| Order in Layer | 在同一个 Sorting Layer 内,进一步细化渲染顺序 |
| Light Probes | 控制粒子如何采样光照探针,用于获取场景的烘焙光照信息。 Custom Provided:通过材质属性块提供自定义光照探针数据,将数据传递权交予开发者。 |
| Normal Direction | 影响Billboard粒子在接收到法线贴图时的光照计算 |
| Allow Roll | 当渲染模式为Horizontal或Vertical Billboard时,此选项允许粒子围绕其朝向轴旋转 |
| Rendering Layer Mask | 用于指定该渲染器属于哪些渲染层 |
| Anchor Override | 为光照探针和反射探针的查找指定一个变换组件。如果为空,则使用粒子系统自身的位置 |