粒子系统 Particle System

  • 时间:2025-12-02 21:55 作者: 来源: 阅读:3
  • 扫一扫,手机访问
摘要:前言 粒子系统是Unity里一个功能强大模块化设计的组件,它可以让开发者能够通过组合与配置不同的功能模块,来模拟各种复杂的动态视觉效果,像是爆炸、火焰、雨雪、云雾等等,这些特效背后往往都是粒子系统在高效运作。接下来我将尽量详细的介绍一下粒子系统。 模块简介 我使用的是Unity2021.3.41的内置粒子系统(Particle System),下面是每个模块的名称及详细功

前言

粒子系统是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  渲染器模块

指定粒子的材质、渲染模式等

粒子系统重点模块概述

1. Main 主模块

这是粒子系统的核心全局模块,默认展开状态,控制整个粒子系统的基础规则和粒子初始状态,所有粒子效果都会受其影响。

界面示意图

核心功能

属性

功能

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:达到最大粒子数后,直接替换系统中最早生成的粒子,新粒子以全新状态(初始位置、速度、颜色)替代旧粒子,旧粒子立即消失。

2.Emission 发射模块

粒子系统的发射模块,主要控制粒子系统的发射频率、数量等。

界面示意图

核心功能

属性

功能

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:概率,爆发事件发生的概率。

3.Shape 形状模块

定义粒子系统从什么形状的区域发射出来,发射方向,发射范围等。

界面示意图

核心功能

属性

功能

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

打破粒子在发射区域内的规整分布(如均匀排列、沿轮廓对齐),通过随机偏移让粒子位置更自然无序,避免机械感,适配自然现象或不规则特效需求。

4.Noise 噪点模块

控制粒子运动轨迹 “自然扰动” 的核心模块,通过模拟自然噪点(如气流、湍流、磁场干扰),让粒子运动从 “规整线性” 变为 “随机自然”。

界面示意图

核心功能

属性

功能

SeparateAxes (分离轴)

对三个坐标轴分布设置参数,实现粒子变化效果

Strength 强度

噪点对粒子的扰动力度

Frequency 频率

噪点的“密集程度”(高频,扰动更细碎,低频,扰动更平缓)

Scroll Speed 滚动速度

噪点场的移动速度(模拟气流流动)

Damping 阻尼

保持噪声整体行为不变的前提下,能够对噪声场进行缩放

Octaves 倍频

控制组合多少层噪声来生成最终效果

Octave Multiplier/Scale 倍频乘数/缩放

控制新增噪声层的强度和频率缩放

Quality 质量

选择噪声计算维度(1D/2D/3D),平衡效果与性能

Remap & Remap Curve 重映射与曲线

将最终的噪声值重新映射到特定范围,以精确控制影响区间

Position Amount 位置量 

控制噪声对粒子位置的影响程度

Rotation Amount 旋转量 

控制噪声对粒子旋转速度的影响(度/秒)

Size Amount 尺寸量

控制噪声对粒子大小的影响程度

5.Collision 碰撞模块

让粒子与场景中的其他物体发生交互,提升特效的真实感和表现力。

界面示意图

核心功能

属性

功能

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视图中显示粒子系统的碰撞盒

6.Triggers 触发模块

根据粒子与场景中一个或多个碰撞体的交互来访问和修改粒子,从而实现各种有趣的效果。

界面示意图

核心功能

属性

功能

Inside

当粒子位于碰撞体内部时触发的操作

Outside

当粒子位于碰撞体外部时触发的操作

Enter

当粒子进入碰撞体时触发的操作

Exit

当粒子离开碰撞体时触发的操作

Collider Query Mode

控制获取粒子与碰撞体交互的信息详细程度

Radius Scale

用于调整粒子碰撞边界的大小

Visualize Bounds

在Scene视图中显示每个粒子的碰撞盒子

7.Texture Sheet Animation 纹理帧动画模块

让粒子的纹理图像像翻页动画一样播放,创造出火焰闪烁、昆虫振翅等生动效果。

界面示意图

核心功能

属性

功能

Mode

选择动画模式:Grid(网格)或 Sprites(精灵图)

Tiles

定义纹理在 X(水平) 和 Y(垂直) 方向上划分的网格数量

Animation

选择动画模式:Whole Sheet(播放整个表格)或 Single Row(播放单行动画)

Time Mode

控制动画帧的采样方式:Lifetime(基于生命周期)、Speed(基于粒子速度)、FPS(固定帧率)

FPS

控制序列帧动画的播放速度

Start Frame

指定粒子动画开始的帧

Affected UV Channels

指定粒子系统影响哪些UV流

8.Light 光照模块

可以将每个粒子作为一个动态的光源,发射光照到场景中。

界面示意图

核心功能

属性

功能

Light

预设,使用该预设上的所有 Light 组件设置(如颜色、强度、范围、类型等)作为基础模板

Ratio

控制有多少比例的粒子会获得光源

Random Distribution

控制 Ratio 的选择方式,随机或者固定分配

Use Particle Color

是否将粒子的颜色应用于光源

Size Affects Range

粒子的尺寸是否影响光源的照射范围

Alpha Affects Intensity

粒子的透明度 是否影响光源的强度

Range Multiplier

控制光源范围在粒子生命周期内的变化

Intensity Multiplier

控制光源强度在粒子生命周期内的变化

Maximum Lights

限制单个粒子系统可以同时存在的最大光源数量

9.Trail 拖尾模块

让粒子在运动时留下轨迹,常用于实现子弹拖尾、魔法光束、烟雾轨迹等效果。

界面示意图

核心功能

属性

功能

Mode

选择拖尾的生成模式:

Particle:每个粒子独立产生一条拖尾;

Ribbon:将粒子按存活时间顺序连接成一条或多条"丝带"。

Ribbon Count

设定在整个粒子系统中要渲染的丝带数量

Split Sub Emitter Ribbons

在子发射器系统上启用时,来自同一父粒子的粒子将共享一条丝带

Attach Ribbons to Transform

为每条丝带添加一个额外的位置,将其连接到变换组件的位置

Ratio

设置有多少比例的粒子会拥有拖尾

Lifetime

拖尾顶点的存活时间,通常表示为粒子生命周期的倍数。时间越长,拖尾也越长

Minimum Vertex Distance

粒子必须移动超过此距离,拖尾才会添加一个新的顶点

Die With Particles

启用后,拖尾会随粒子的死亡而立即消失。禁用后,拖尾会继续存在直至自身生命周期结束

Texture Mode

控制贴图在拖尾上的应用方式:

Stretch:将贴图拉伸覆盖整个拖尾;
Tile:根据材质中的平铺参数,按一定距离重复贴图;
RepeatPerSegment/DistributePer Segment:基于拖尾的片段进行贴图重复或分布。

Size affects Width

启用后,粒子的尺寸将影响拖尾的宽度。粒子越大,拖尾越宽

Size affects Lifetime

启用后,粒子的尺寸将影响拖尾的生命周期

Inherit Particle Color

启用后,拖尾的颜色会与产生它的粒子颜色一致

Color over Lifetime

定义拖尾颜色在其依附粒子的整个生命周期内如何变化

Width over Trail

控制拖尾沿其自身长度的宽度变化

Color over Trail

定义拖尾颜色沿其自身长度如何变化

Generate Lighting Data

启用后,拖尾几何体将生成法线和切线,使得场景灯光和法线贴图能够影响拖尾,让其更好地融入三维环境

Shadow Bias

沿光线方向移动阴影,用于消除因拖尾的布告板几何体近似体积而产生的阴影瑕疵

10.Renderer 渲染模块

粒子系统渲染模块,决定了粒子的基本形态。

界面示意图

核心功能

属性

功能

Render Mode

粒子面对相机的方式:

Billboard:所有粒子始终完全正面朝向相机。这是最常用和性能最高的模式,适用于烟雾、云、火焰等;
Stretched Billboard:拉伸广告牌。粒子会根据其速度被拉伸,创造出运动模糊感;
Horizontal Billboard:粒子平行于地平面(XZ平面),但朝向相机。适合地面上的光环、水洼; 
Vertical Billboard:粒子平行于世界Y轴,但朝向相机。适合树木、墙壁上的贴花;
Mesh:不使用四边形,而是使用一个3D网格模型作为粒子。适合表现碎片、雪花、星星等需要体积感的物体。

Material

指定用于渲染粒子的材质。材质决定了粒子的颜色纹理、着色器、透明度混合模式等。必须指定一个材质,否则粒子不可见。

Trail Material

拖尾材质,如果启用了Trail模块,可以在这里为拖尾指定一个独立的材质

Sort Mode

决定粒子被渲染的先后顺序,主要影响透明效果的混合:
None:不排序,性能最好,但可能导致透明排序错误; 
By Distance:根据粒子到相机的距离排序,先渲染远的,后渲染近的。这是处理透明粒子的标准方式;
Oldest in Front:先渲染最早出生的粒子;
Youngest in Front:先渲染最新出生的粒子;

By Depth:根据粒子到摄像机平面的深度排序渲染。

Sorting Fudge

影响粒子在整个场景中的渲染排序。值越小,粒子越晚被渲染,从而可能覆盖在其他透明物体之上。用于精细调整渲染层级

Render Alignment

在某些特定情况下(如粒子附着在骨骼上时)使用,通常保持默认的View即可

Flip

随机水平或垂直翻转粒子,用于增加视觉变化,避免重复感

Enable Mesh GPU Instancing

当粒子使用网格(Mesh)形态时,勾选这个选项,Unity会尝试通过一次绘制调用(Draw Call)渲染多个相同的网格粒子,从而显著提升运行效率

Pivot

调整粒子几何体的轴心点

Visualize Pivot

在场景视图中预览每个粒子的轴心点位置

Masking

粒子与UI元素的交互。
No Masking:无遮罩;

Visible Inside Mask:粒子只在Rect Mask 2D组件区域内可见; 
Visible Outside Mask:粒子只在Rect Mask 2D组件区域外可见。

Apply Active Color Space

控制粒子颜色是否与项目的当前颜色空间设置保持一致

Custom Vertex Streams

自定义顶点流,可以将粒子系统的内部数据(如速度、生命周期等)传递给你自己编写的着色器,从而实现远超标准着色器的个性化视觉效果

Cast Shadows

粒子是否向其他物体投射阴影。
On:投射实时阴影,性能开销大;
Two Sided:双面投射阴影(考虑粒子两面);
Shadows Only:只显示阴影,粒子本身不可见(常用于特殊技巧);

Off:不投射阴影(默认)。

Shadow Bias

沿光线方向移动阴影,用于消除因拖尾的布告板几何体近似体积而产生的阴影瑕疵

Sorting Layer ID

定义粒子系统位于哪个渲染层

Order in Layer

在同一个 Sorting Layer 内,进一步细化渲染顺序

Light Probes

控制粒子如何采样光照探针,用于获取场景的烘焙光照信息。
Off:不使用;
Blend Probes:混合最近的探针,适用于在场景中移动的粒子; 
Use Proxy Volume:在体积内混合探针,更精确,开销更大;

Custom Provided:通过材质属性块提供自定义光照探针数据,将数据传递权交予开发者。

Normal Direction

影响Billboard粒子在接收到法线贴图时的光照计算

Allow Roll

当渲染模式为Horizontal或Vertical Billboard时,此选项允许粒子围绕其朝向轴旋转

Rendering Layer Mask

用于指定该渲染器属于哪些渲染层

Anchor Override

为光照探针和反射探针的查找指定一个变换组件。如果为空,则使用粒子系统自身的位置

  • 全部评论(0)
最新发布的资讯信息
【系统环境|】创建一个本地分支(2025-12-03 22:43)
【系统环境|】git 如何删除本地和远程分支?(2025-12-03 22:42)
【系统环境|】2019|阿里11面+EMC+网易+美团面经(2025-12-03 22:42)
【系统环境|】32位单片机定时器入门介绍(2025-12-03 22:42)
【系统环境|】从 10 月 19 日起,GitLab 将对所有免费用户强制实施存储限制(2025-12-03 22:42)
【系统环境|】价值驱动的产品交付-OKR、协作与持续优化实践(2025-12-03 22:42)
【系统环境|】IDEA 强行回滚已提交到Master上的代码(2025-12-03 22:42)
【系统环境|】GitLab 15.1发布,Python notebook图形渲染和SLSA 2级构建工件证明(2025-12-03 22:41)
【系统环境|】AI 代码审查 (Code Review) 清单 v1.0(2025-12-03 22:41)
【系统环境|】构建高效流水线:CI/CD工具如何提升软件交付速度(2025-12-03 22:41)
手机二维码手机访问领取大礼包
返回顶部