unity-粒子系统参数

什么是粒子系统:

__粒子__是由粒子系统大量呈现或移动的简单小型图像网格。每个粒子代表一小部分流体或无定形实体,而众多粒子将共同营造出完整的实物感。以烟幕云团为例,每个粒子都具备细小烟雾的质感,自身形态类似于微型云团。在场景内,大量的这些微型云团通过排列组合,营造出体积更大的整体云团效果。

属性

属性 功能
Duration 系统运行的时间长度。
Looping 如果启用此属性,系统将在其持续时间结束时再次启动并继续重复该循环。
Prewarm 如果启用此属性,系统将初始化,就像已经完成一个完整周期一样(仅当 Looping 也启用时才有效)。
Start Delay 启用此属性后,系统开始发射前将延迟一段时间(以秒为单位)。
Start Lifetime 粒子的初始生命周期。
Start Speed 每个粒子在适当方向的初始速度。大于0时,向外移动,小于0时向内移动(吸的效果)。
3D Start Size 如果要分别控制每个轴的大小,请启用此属性。
Start Size 每个粒子的初始大小。
3D Start Rotation 如果要分别控制每个轴的旋转,请启用此属性。
Start Rotation 每个粒子的初始旋转角度。
Randomize Rotation Direction 使一些粒子以相反的方向旋转。
Start Color 每个粒子的初始颜色。
Gravity Modifier 缩放 Physics Manager 中设置的重力值。值为零会关闭重力。
Simulation Space 控制粒子的运动位置是在父对象的局部空间中(因此与父对象一起移动)、在世界空间中还是相对于自定义对象(与您选择的自定义对象一起移动)。属性确定粒子是随粒子系统父对象移动、随自定义对象移动还是在游戏世界中独立移动
Simulation Speed 调整整个系统更新的速度。
Delta Time 在 Scaled 和 Unscaled 之间进行选择,其中的 Scaled 使用时间管理器 (Time Manager) 中的 Time Scale 值,而 Unscaled 将忽略该值。此属性对于出现在暂停菜单 (Pause Menu) 上的粒子系统非常有用。
Scaling Mode 选择如何使用变换中的缩放。设置为 HierarchyLocal 或 Shape。Local 仅应用粒子系统变换缩放,忽略任何父级。Shape 模式将缩放应用于粒子起始位置,但不影响粒子大小。
Play on Awake 如果启用此属性,则粒子系统会在创建对象时自动启动。
Emitter Velocity 选择粒子系统如何计算 Inherit Velocity 和 Emission 模块使用的速度。系统可使用刚体组件(如果存在)或通过跟踪变换组件的移动情况来计算速度。
Max Particles 系统中同时允许的最多粒子数。如果达到限制,则移除一些粒子。
Auto Random Seed 如果启用此属性,则每次播放时粒子系统看起来都会不同。设置为 false 时,每次播放时系统都完全相同。
Random Seed 禁用自动随机种子时,此值用于创建唯一的可重复效果。
Stop Action 当属于系统的所有粒子都已完成时,可使系统执行某种操作。当一个系统的所有粒子都已死亡,并且系统存活时间已超过 Duration 设定的值时,判定该系统已停止。对于循环系统,只有在通过脚本停止系统时才会发生这种情况。
    Disable 禁用游戏对象。
    Destroy 销毁游戏对象。
    Callback

将 OnParticleSystemStopped 回调发送给附加到游戏对象的任何脚本。

Culling Mode 选择当粒子不在屏幕上时是否暂停粒子系统模拟。 在屏幕外时最有效的剔除方法是,但您可能需要继续模拟一种非效果。
    Automatic 循环系统使用”Pause'',而所有其他系统始终使用“ Always Simulate''。
    Pause And Catch-up 屏幕外时,系统停止模拟。 重新进入视图时,模拟将执行一个较大的步骤,以达到不暂停视图的原样。 在复杂的系统中,此选项可能会导致性能峰值。
    Pause 屏幕外时,系统停止模拟。
    Always Simulate 无论是否在屏幕上,系统都会在每个帧上处理其仿真。 这对于单次拍摄的效果(例如烟花)非常有用,在仿真过程中这种效果很明显。
Ring Buffer Mode 使粒子保持活动状态,直到达到“最大粒子数''为止,此时新粒子将回收最旧的粒子,而不是在其寿命到期时移除粒子。
    Disabled 禁用环缓冲模式,因此系统会在使用寿命结束时移除颗粒。
    Pause Until Replaced 在寿命到期时暂停旧粒子,直到达到“最大粒子”限制,此时系统将其回收,因此它们会作为新粒子重新出现。
    Loop Until Replaced 在使用寿命结束时,粒子会倒退到其使用寿命的指定比例,直到达到“最大粒子”限制,此时系统将其回收,因此它们会重新显示为新粒子。

Emission 模块

此模块中的属性会影响粒子系统发射的速率和时间。

unity-粒子系统参数_第1张图片

属性

属性 功能
Rate over Time 每个时间单位发射的粒子数。
Rate over Distance 每个移动距离单位发射的粒子数。
Bursts 爆发是指生成粒子的事件。通过这些设置可允许在指定时间发射粒子。
    Time 设置发射爆发粒子的时间(粒子系统开始播放后的秒数)。
    Count 设置可能发射的粒子数的值。
    Cycles 设置播放爆发次数的值。
    Interval 设置触发每个爆发周期的间隔时间(以秒为单位)的值。

根据曲线,发射速率可以是恒定的,也可以在系统的生命周期内变化。如果激活 Rate over Distance 模式,则父对象移动的每个距离单位将释放一定数量的粒子。此模式对于模拟实际由对象运动产生的粒子非常有用(例如,泥路上车轮留下的尘土)。

如果激活 Rate over Time 模式,则无论父对象如何移动,每秒都会发射所需数量的粒子。此外,还可添加在特定时间出现的额外粒子爆发(例如,蒸汽火车烟囱产生一股股的烟雾)。

粒子系统 Shape 模块

此模块用于定义可发射粒子的体积或表面以及起始速度的方向。Shape 属性定义发射体积的形状,其余模块属性根据您选择的 Shape 值而变化。

所有形状(Mesh 除外)都具有定义其大小的属性,例如 Radius 属性。要编辑这些属性,请在 Scene 视图中拖动线框发射器形状上的控制柄。形状的选择会影响可发射粒子的区域,但也会影响粒子的初始方向。例如,__球体 (Sphere)__ 向外向各个方向发射粒子,__锥体 (Cone)__ 发射发散的粒子流,而__网格 (Mesh)__ 在垂直于表面的方向上发射粒子。

以下部分将详细介绍每种__形状__的属性。

Shape 模块中的形状

Sphere、Hemisphere

注意:Sphere 和 Hemisphere 具有相同的属性。

属性 功能
Shape 发射体积的形状。
Sphere 在所有方向均匀发射粒子。
Hemisphere 在平面其中一面的所有方向均匀发射粒子。
Radius 形状的圆形半径。
Radius Thickness 发射粒子的体积比例。值为 0 表示从形状的外表面发射粒子。值为 1 表示从整个体积发射粒子。介于两者之间的值将使用体积的一定比例。
Texture 用于为粒子着色和丢弃粒子的纹理。
Clip Channel(新版本无) 纹理中用于丢弃粒子的通道。
Clip Threshold(新版本无) 将粒子映射到纹理上的位置时,丢弃像素颜色低于此阈值的所有粒子。
Color affects Particles(新版本无) 粒子颜色受纹理颜色影响。
Alpha affects Particles(新版本无) 粒子 Alpha 受纹理 Alpha 影响。
Bilinear Filtering(新版本无) 在读取纹理时,无论纹理尺寸如何,均组合 4 个相邻样本以获得更平滑的粒子颜色变化。
Position 将一个偏移应用于生成粒子的发射器形状。
Rotation 旋转生成粒子的发射器形状。
Scale 更改生成粒子的发射器形状的大小。
Align to Direction 根据粒子的初始行进方向定向粒子。如果想要模拟大块的汽车油漆在碰撞过程中飞出车身,此设置将非常有用。如果对该方向不太满意,也可通过在__主__模块中应用 Start Rotation 值来覆盖该设置。
Randomize Direction 将粒子方向朝随机方向混合。设置为 0 时,此设置不起作用。设置为 1 时,粒子方向完全随机。
Spherize Direction 将粒子方向朝球面方向混合,从它们的变换中心向外行进。设置为 0 时,此设置不起作用。设置为 1 时,粒子方向从中心向外(与 Shape 设置为 Sphere 时的行为相同)。
Randomize Position 以随机量移动粒子,直至达到指定值。此属性设置为 0 时,此设置不起作用。任何其他值都会对粒子的生成位置应用一些随机性。

Cone

unity-粒子系统参数_第2张图片

设置为 Cone 模式的 Shape 模块

属性 功能
Shape 发射体积的形状。
Cone 从锥体的底部或主体发射粒子。根据粒子与锥体中心线的距离按比例发射粒子。
Angle 锥体在其顶点处的角度。角度为 0 时产生圆柱体,角度为 90 度时产生圆盘。
Radius 形状的圆形半径。
Radius Thickness 发射粒子的体积比例。值为 0 表示从形状的外表面发射粒子。值为 1 表示从整个体积发射粒子。介于两者之间的值将使用体积的一定比例。
Arc 形成发射器形状的整圆的角部。
Mode 定义 Unity 如何在形状的弧形周围生成粒子。当此选项设置为 Random 时,Unity 在弧形周围随机生成粒子。如果使用 Loop__,Unity 会在形状的弧形周围依序生成粒子,并在每个周期结束时循环回到起点。Ping-Pong__ 与 Loop 基本相同,不同之处在于每个连续循环的发生方向与上一个循环相反。最后,__Burst Spread__ 模式在形状周围均匀分布粒子生成位置。此模式可提供均匀的粒子扩散,不同于默认的随机化行为,默认情况下的粒子可能不均匀地聚集在一起。Burst Spread 最适合与爆发发射一起使用。
Spread 弧形周围可产生粒子的离散间隔。例如,值为 0 表示允许在弧形周围的任何位置生成粒子,值为 0.1 表示仅在形状周围以 10% 的间隔生成粒子。
Speed 发射位置围绕弧形移动的速度。使用值字段旁边的小黑色下拉菜单将此属性设置为 Constant 可使值始终保持不变,而设置为 Curve 可使值随时间变化。仅当 Mode 设置为 Random 以外的其他设置时,此选项才可用
Length 锥体的长度。仅当 Emit from: 属性设置为 Volume 时,此选项才适用。
Emit from: 锥体发射粒子的部分:__Base__ 或 Volume

Box

unity-粒子系统参数_第3张图片

设置为 Box 模式的 Shape 模块

属性 功能
Shape 发射体积的形状。
Box 从盒体形状的边、表面或主体发射粒子。粒子在发射器对象的前向 (Z) 方向上移动。
Emit from: 选择盒体发射粒子的部分:__EdgeShell__ 或 Volume

Mesh、MeshRenderer、SkinnedMeshRenderer

unity-粒子系统参数_第4张图片

unity-粒子系统参数_第5张图片

 

设置为 Mesh 模式的 Shape 模块

Mesh、MeshRenderer 和 SkinnedMeshRenderer 具有相同的属性。

属性 功能
Shape 发射体积的形状。
Mesh 从 Inspector 中提供的任意网格形状发射粒子。
MeshRenderer 从引用的游戏对象网格渲染器 (Mesh Renderer) 发射粒子。
SkinnedMeshRenderer 从引用的游戏对象带蒙皮的网格渲染器 (Skinned Mesh Renderer) 发射粒子。
type  指定从何处发射粒子。选择 Vertex 表示从顶点发射粒子,__Edge__ 表示从边发射粒子,__Triangle__ 表示从三角形发射粒子。默认情况下,此设置为 Vertex
Mesh 提供发射器形状的网格。
Single Material 指定是否从特定子网格(由材质索引号标识)发射粒子。如果启用此属性,则会显示一个数字字段,您可以使用该字段指定材质索引号。
Use Mesh Colors 使用网格顶点颜色调整粒子颜色,或者,如果顶点颜色不存在,则使用材质中的着色器颜色属性“Color“或”TintColor”。
Normal Offset 在距离网格表面多远处发射粒子(在表面法线的方向上)

Circle

unity-粒子系统参数_第6张图片

设置为 Circle 模式的 Shape 模块

属性 功能
Shape 发射体积的形状。
Circle 从圆形的中心或边缘均匀发射粒子。粒子仅在圆形的平面内移动。
Radius 形状的圆形半径。
Radius Thickness 发射粒子的体积比例。值为 0 表示从圆形的边缘发射粒子。值为 1 表示从整个面积发射粒子。介于两者之间的值将使用面积的一定比例。
Arc 形成发射器形状的整圆的角部。
Mode 定义 Unity 如何在形状的弧形周围生成粒子。当此选项设置为 Random 时,Unity 在弧形周围随机生成粒子。如果使用 Loop__,Unity 会在形状的弧形周围依序生成粒子,并在每个周期结束时循环回到起点。Ping-Pong__ 与 Loop 基本相同,不同之处在于每个连续循环的发生方向与上一个循环相反。最后,__Burst Spread__ 模式在形状周围均匀分布粒子生成位置。此模式可用于提供均匀的粒子扩散,不同于默认的随机化行为,默认情况下的粒子可能不均匀地聚集在一起。Burst Spread 最适合与爆发发射一起使用。
Spread 控制弧形周围可产生粒子的离散间隔。例如,值为 0 表示允许在弧形周围的任何位置生成粒子,值为 0.1 表示仅在形状周围以 10% 的间隔生成粒子。
Speed

设置发射位置围绕弧形移动的速度值。使用值字段旁边的小黑色下拉选单将此属性设置为 Constant 可使值始终保持不变,而设置为 Curve 可使值随时间变化。

Edge

unity-粒子系统参数_第7张图片

设置为 Edge 模式的 Shape 模块

属性 功能
Shape 发射体积的形状。
Edge 从线段发射粒子。粒子在发射器对象的向上 (Y) 方向上移动。
Radius 此 Radius 属性用于定义边的长度。
Mode 定义 Unity 如何沿着形状的半径生成粒子。当此选项设置为 Random 时,Unity 沿着半径随机生成粒子。如果使用 Loop__,Unity 会沿着形状的半径依序生成粒子,并在每个周期结束时循环回到起点。Ping-Pong__ 与 Loop 基本相同,不同之处在于每个连续循环的发生方向与上一个循环相反。最后,__Burst Spread__ 模式沿着半径均匀分布粒子生成位置。此模式可用于提供均匀的粒子扩散,不同于默认的随机化行为,默认情况下的粒子可能不均匀地聚集在一起。Burst Spread 最适合与爆发发射一起使用。
Spread 沿着半径可产生粒子的离散间隔。例如,值为 0 表示允许沿着半径的任何位置生成粒子,值为 0.1 表示仅沿着半径以 10% 的间隔生成粒子。
Speed 发射位置沿着半径移动的速度。使用值字段旁边的小黑色下拉选单将此属性设置为 Constant 可使值始终保持不变,而设置为 Curve 可使值随时间变化。

Donut

unity-粒子系统参数_第8张图片

设置为 Donut 模式的 Shape 模块

属性 功能
Shape 发射体积的形状。
Donut 从环面发射粒子。粒子从环面的环向外移动。
Radius 主圆环的半径。
Donus Radius 外圆环的粗度。
Radius Thickness 发射粒子的体积比例。值为 0 表示从圆形的边缘发射粒子。值为 1 表示从整个面积发射粒子。介于两者之间的值将使用面积的一定比例。
Arc 形成发射器形状的整圆的角部。
Mode 定义 Unity 如何在形状的弧形周围生成粒子。当此选项设置为 Random 时,Unity 在弧形周围随机生成粒子。如果使用 Loop__,Unity 会在形状的弧形周围依序生成粒子,并在每个周期结束时循环回到起点。Ping-Pong__ 与 Loop 基本相同,不同之处在于每个连续循环的发生方向与上一个循环相反。最后,__Burst Spread__ 模式在形状周围均匀分布粒子生成位置。此模式可用于提供均匀的粒子扩散,不同于默认的随机化行为,默认情况下的粒子可能不均匀地聚集在一起。Burst Spread 最适合与爆发发射一起使用。
Spread 弧形周围可产生粒子的离散间隔。例如,值为 0 表示允许在弧形周围的任何位置生成粒子,值为 0.1 表示仅在形状周围以 10% 的间隔生成粒子。
Speed 发射位置围绕弧形移动的速度。使用值字段旁边的小黑色下拉选单将此属性设置为 Constant 可使值始终保持不变,而设置为 Curve 可使值随时间变化。

Rectangle

unity-粒子系统参数_第9张图片

设置为 Rectangle 模式的 Shape 模块

属性 功能
Shape 发射体积的形状。
Rectangle 从矩形发射粒子。粒子从矩形向上移动。

Sprite and Sprite Renderer

unity-粒子系统参数_第10张图片

 

The shape module when set to Sprite mode

Sprite and SpriteRenderer have the same properties.

Property Function
Shape The shape of the emission volume.
Sprite Emits particles from a Sprite shape supplied via the Inspector.
SpriteRenderer Emits particles from a reference to a GameObject’s Sprite Renderer
.
Type Where particles are emitted from. Select Vertex to emit particles from the vertices, Edge to emit particles from the edges, or Triangle to emit particles from the triangles. This is set to Vertex by default.
Sprite The Sprite that defines the particle emitter’s shape.
Normal Offset Distance away from the surface of the Sprite to emit particles (in the direction of the surface normal)

Velocity over Lifetime 模块

Velocity over Lifetime 模块可控制粒子在其生命周期内的速度。

unity-粒子系统参数_第11张图片

属性

属性 功能
Linear X, Y, Z 粒子在 X、Y 和 Z 轴上的线性速度。
Space 指定 Linear X, Y, Z 轴是参照本地空间还是世界空间。
Orbital X, Y, Z 粒子围绕 X、Y 和 Z 轴的轨道速度。
Offset X, Y, Z 轨道中心的位置,适用于轨道运行粒子。
Radial 粒子远离/朝向中心位置的径向速度。
Speed Modifier 在当前行进方向上/周围向粒子的速度应用一个乘数。

要创建在特定方向上漂移的粒子,请使用 Linear X、Y 和 Z 曲线。

要创建围绕中心位置旋转的粒子效果,请使用 Orbital 速度值。此外,可使用 Radial 速度值推动粒子朝向或远离中心位置。您可以使用 Offset 值为每个粒子定义自定义的旋转中心。

还可以使用此模块调整粒子系统中的粒子速度,而不影响粒子的方向,方法是将所有上述值保留为零,仅修改 Speed Modifier 值。

Limit Velocity Over Lifetime 模块

此模块控制粒子的速度在其生命周期内如何降低。

unity-粒子系统参数_第12张图片

属性

属性 功能
Separate Axes 将轴拆分为单独的 X、Y 和 Z 分量。
Speed 设置粒子的速度限制。
Space 选择速度限制是适用局部空间还是世界空间。仅当启用了 Separate Axes 时,此选项才可用。
Dampen 当粒子速度超过速度限制时,粒子速度降低的比例。
Drag 对粒子速度施加线性阻力。
Multiply by Size 启用此属性后,较大的粒子会更大程度上受到阻力系数的影响。
Multiply by Velocity 启用此属性后,较快的粒子会更大程度上受到阻力系数的影响。

该模块非常适合用于模拟会减慢粒子速度的空气阻力,特别是在使用下降曲线随时间推移而降低速度限制的情况下。例如,爆炸或烟花最初以极快的速度爆发,但是发射的粒子在穿过空气的过程中会迅速减速。

Drag 选项通过提供基于粒子大小和速度施加不同阻力的选项,提供在物理上更加精确的空气阻力模拟。

Inherit Velocity 模块

此模块控制粒子的速度如何随时间推移而受到其父对象移动的影响。

属性

属性 功能
Mode 指定如何将发射器速度应用于粒子
    Current 发射器的当前速度将应用于每一帧上的所有粒子。例如,如果发射器减速,所有粒子也将减速。
    Initial 每个粒子出生时将施加一次发射器的速度。粒子出生后对发射器速度的任何改变都不会影响该粒子。
Multiplier 粒子应该继承的发射器速度的比例。

这种效果对于从移动对象发射粒子非常有用,例如汽车产生的尘云、火箭产生的烟雾、蒸汽火车烟囱产生的蒸汽,或者粒子最初应以所在对象的速度百分比移动的任何情况。仅当 Simulation Space 在主模块中设置为 World 时,此模块才对粒子有影响。

此外也可以使用曲线来影响随时间变化的效果。例如,可对新创建的粒子施加强烈的吸力,使吸力随时间推移而减少。这对于蒸汽火车烟雾可能有用,因为蒸汽火车烟雾会随着时间的推移而缓慢漂移并在发出后停止跟随火车。

Force Over Lifetime 模块

通过此模块中指定的力(例如风或吸力)可对粒子加速。

属性

属性 功能
X, Y, Z 在 X、Y 和 Z 轴上施加到每个粒子的力。
Space 选择是在局部空间还是在世界空间中施力。
Randomize 使用 Two Constants 或 Two Curves 模式时,此属性会导致在每个帧上在定义的范围内选择新的作用力方向。因此会产生更动荡、更不稳定的运动。

流体在移动时经常受到力的影响。例如,烟雾从火中升起时因周围热空气的拉升作用而略微加速。使用曲线在粒子生命周期内进行力的控制,可实现微妙的效果。根据前面的例子,烟雾最初会向上加速,但随着上升的空气逐渐冷却,力会减弱。从火焰冒出的浓烟可能最初会加速,然后随着烟雾的蔓延而减速,如果持续很长时间,甚至可能开始落到地上。

Color Over Lifetime 模块

此模块指定粒子的颜色和透明度在其生命周期中如何变化。

属性

属性: 功能:
Color 粒子在其生命周期内的颜色渐变。渐变条的左侧点表示粒子寿命的开始,而渐变条的右侧表示粒子寿命的结束。

在上图中,粒子从橙色开始,随着时间的推移逐渐变淡,并在其寿命结束时不可见。

许多类型的天然和超现实粒子的颜色随时间而变化,因此该属性有许多用途。例如,白色强火花在通过空气时会冷却,魔法可能会突然变成彩虹色。但同样重要的还有 Alpha(透明度)的变化。粒子在达到其生命周期终点时燃尽、褪色或消散是很常见的现象(例如,强火花、烟花和烟雾粒子),通过简单的梯度渐变即可产生这种效果。

Color By Speed 模块

在此模块中可设置粒子的颜色根据粒子速度(每秒的距离单位)变化。

属性

属性 功能
Color 在速度范围内定义的粒子的颜色渐变。
Speed Range 颜色渐变映射到的速度范围的下限和上限(超出范围的速度将映射到渐变的端点)。

燃烧或发光的粒子(如火花)在空气中快速移动时会更明亮地燃烧(例如,当火花接触到更多氧气时),但随着它们减速时会略微变暗。要模拟这一点,可使用 Color By Speed 模块,使渐变在速度范围的上限为白色,而在下限为红色(在火花示例中,较快的粒子将显示为白色,而较慢的粒子为红色)。

Size over Lifetime 模块

许多效果涉及根据曲线改变粒子大小,这些设置可在此模块中进行。

属性

属性 功能
Separate Axes 在每个轴上独立控制粒子大小。
Size 通过一条曲线定义粒子的大小在其生命周期内如何变化。

一些粒子通常会在远离发射点时发生大小变化,比如表示气体、火焰或烟雾的粒子。例如,随着时间的推移,烟雾往往会消散并占据更大的体积。为实现此目的,可将烟雾粒子的曲线设置为向上坡道曲线,随着粒子的存活时间而增加。此外还可使用 Color Over Lifetime 模块在烟雾蔓延时淡化烟雾,从而进一步增强此效果。

对于燃料燃烧产生的火球,火焰粒子在发射后会趋于膨胀,但后期随着燃料用完和火焰消散而逐渐消失和收缩。在这种情况下,曲线会有一个先上升再下降到较小大小的“驼峰”。

非均匀粒子缩放

您可以指定粒子的宽度、高度和深度如何在生命周期内分别变化。在 Size over Lifetime 模块中,选中 Separate Axes 复选框,然后更改 X(宽度)、Y(高度)和 Z(深度)。请注意,Z 仅用于网格粒子。

Size by Speed 模块

在此模块中可创建能够根据速度(每秒的距离单位)改变大小的粒子。

属性

属性 功能
Separate Axes 在每个轴上独立控制粒子大小。
Size 通过曲线定义粒子在速度范围内的大小。
Speed Range 大小曲线映射到的速度范围的下限和上限(超出范围的速度将映射到曲线的端点)。

某些情况下需要能够根据速度改变大小的粒子。例如,发生爆炸时,您可能希望小碎片的加速度高于更大的碎片。使用 Size By Speed 并结合简单的斜坡曲线(此曲线可随粒子大小减小使粒子速度按比例增加),即可实现这样的效果。请注意,此模块不应与 Limit Velocity Over Lifetime 模块一起使用,除非您希望粒子在减速时改变其大小。

Speed Range 指定 X(宽度)、Y(高度)和 Z(深度)形状适用的值范围。仅当大小处于其中一种曲线模式时才应用 Speed Range。快速的粒子将使用曲线右端的值缩放,而较慢的粒子将使用曲线左侧的值。例如,如果指定 10 到 100 之间的 Speed Range:

  • 低于 10 的速度将设置粒子大小与曲线的最左边相对应。
  • 高于 100 的速度将设置粒子大小与曲线的最右边相对应。
  • 10 到 100 之间的速度会将粒子大小设置为由曲线上与速度对应的点确定。在此示例中,速度为 55 将根据曲线的中点设置粒子大小。

非均匀粒子缩放

您可以指定粒子的宽度、高度和深度大小如何分别随速度变化。在 Size by Speed 模块中,选中 Separate Axes 复选框,然后选择粒子的 X(宽度)、Y(高度)和 Z(深度)如何受粒子速度的影响。请注意,Z 仅用于网格粒子。

Rotation Over Lifetime 模块

在模块中可配置粒子在移动时旋转。

属性

属性 功能
Separate Axes 允许根据每个轴指定旋转。启用此选项后,即可为 X、Y 和 Z 轴中的每个轴设置旋转。
Angular Velocity 旋转速度(以度/秒为单位)。请参阅下文以了解更多信息。

当粒子表示小型实体对象(例如爆炸产生的碎片)时,此设置很有用。分配随机的旋转值将使效果比粒子在飞行时保持直立更加真实。随机旋转也有助于打破粒子形状相似的规律性(重复多次的相同纹理可能会非常明显)。

unity-粒子系统参数_第13张图片

使用具有随机 3D 旋转特性的粒子渲染的树叶

选项

角速度选项可在默认的恒定速度基础上进行更改。速度右侧的下拉选单可提供:

属性 功能
Constant 粒子旋转的速度,以度/秒为单位。
Curve 角速度可设定为在粒子的生命周期内变化。Inspector 底部会出现一个曲线编辑器,可用于控制粒子在整个生命周期内的速度变化情况(请参阅下图 A)。如果勾选了 Separate Axes 复选框,则可为每个 X、Y 和 Z 轴赋予曲线速度值。
Random Between Two Constants 角速度属性具有两个角度,允许在它们之间旋转。
Random Between Two Curves 角速度可设定为在粒子的生命周期(由曲线指定)内变化。在此模式下,两条曲线均为可编辑状态,每个粒子将在您定义的这两条曲线的范围之间选择一条随机曲线(请参阅下图 B)。

unity-粒子系统参数_第14张图片

图 A:Z 轴角速度

unity-粒子系统参数_第15张图片

图 B:两条曲线之间的角速度

Rotation By Speed 模块

在此模块中可设置粒子的旋转根据粒子速度(每秒的距离单位)变化。

属性

属性 功能
Separate Axes 为每个旋转轴独立控制旋转。
Angular Velocity 旋转速度(以度/秒为单位)。
Speed Range 大小曲线映射到的速度范围的下限和上限(超出范围的速度将映射到曲线的端点)。

当粒子表示在地面上移动的固体对象(例如滑坡的岩石)时,可使用此属性。可根据速度按比例设置粒子的旋转,使粒子在表面上滚动的效果具有令人信服。

仅当速度处于其中一种曲线模式时才应用 Speed Range。快速的粒子将使用曲线右端的值旋转,而较慢的粒子将使用曲线左侧的值。

External Forces 模块

此属性可修改__风区__对系统发射的粒子的影响。

属性

属性 功能
Multiplier 应用于风区外力的比例值。

详细信息

_地形__可添加_风区_来影响树在景观中的运动。启用此部分的功能允许风区吹动系统发射的粒子。通过 Multiplier_ 值可调整风对粒子的影响,因为风对粒子的吹动作用通常比树枝更强烈。

Collision 模块

此模块控制粒子如何与场景中的游戏对象碰撞。使用第一个下拉选单可定义碰撞设置是应用于 Planes 还是应用于 World。如果选择 World__,请使用 Collision Mode__ 下拉选单定义碰撞设置是应用于 2D 还是 3D 世界。

Planes 模块属性

unity-粒子系统参数_第16张图片

属性 功能
Planes 弹出菜单 选择 Planes 模式。
Planes 用于定义碰撞平面的变换的可扩展列表。
Visualization 选择要将 Scene 视图中的碰撞平面辅助图标显示为线框网格还是实体平面。
Scale Plane 用于可视化的平面大小。
Dampen 粒子碰撞后损失的速度比例。
Bounce 粒子碰撞后从表面反弹的速度比例。
Lifetime Loss 粒子碰撞后损失的总生命周期比例。
Min Kill Speed 碰撞后运动速度低于此速度的粒子将从系统中予以移除。
Max Kill Speed 碰撞后运动速度高于此速度的粒子将从系统中予以移除。
Radius Scale 允许调整粒子碰撞球体的半径,使其更贴近粒子图形的可视边缘。
Send Collision Messages 如果启用此属性,则可从脚本中通过 OnParticleCollision 函数检测粒子碰撞。
Visualize Bounds 在 Scene 视图中将每个粒子的碰撞边界渲染为线框形状。

World 模块属性

unity-粒子系统参数_第17张图片

属性 功能
World 弹出菜单 选择 World 模式。
Collision Mode 3D 或 2D。
Dampen 粒子碰撞后损失的速度比例。
Bounce 粒子碰撞后从表面反弹的速度比例。
Lifetime Loss 粒子碰撞后损失的总生命周期比例。
Min Kill Speed 碰撞后运动速度低于此速度的粒子将从系统中予以移除。
Max Kill Speed 碰撞后运动速度高于此速度的粒子将从系统中予以移除。
Radius Scale 2D 或 3D 的设置。
Collision Quality 使用下拉选单来设置粒子碰撞的质量。此设置会影响有多少粒子可以穿过碰撞体。在较低的质量水平下,粒子有时会穿过碰撞体,但需要的计算资源较少。
    High 当 Collision Quality 设置为 High 时,碰撞始终使用物理系统来检测碰撞结果。此设置是最耗费资源但也是最准确的选项。
    Medium (Static Colliders) 当 Collision Quality 设置为 Medium (Static Colliders) 时,碰撞使用一组体素来缓存先前的碰撞,从而在以后的帧中更快地重用。请参阅下方的世界碰撞以了解与此缓存相关的更多信息。

Medium 和 Low 之间的唯一区别是粒子系统在每帧查询物理系统的次数。Medium 每帧的查询次数多于 Low

请注意,此设置仅适用于从不移动的静态碰撞体。
    Low (Static Colliders) 当 Collision Quality 设置为 Low (Static Colliders) 时,碰撞使用一组体素来缓存先前的碰撞,从而在以后的帧中更快地重用。请参阅下方的世界碰撞以了解与此缓存相关的更多信息。

Medium 和 Low 之间的唯一区别是粒子系统在每帧查询物理系统的次数。Medium 每帧的查询次数多于 Low

请注意,此设置仅适用于从不移动的静态碰撞体。
Collides With 粒子只会与所选层上的对象发生碰撞。
Max Collision Shapes 粒子碰撞可包括的碰撞形状个数。多余的形状将被忽略,且地形优先。
Enable Dynamic Colliders 允许粒子也与动态对象碰撞(否则仅使用静态对象)。
Enable Dynamic Colliders 动态碰撞体是未配置为 Kinematic 的任何碰撞体(请参阅碰撞体相关文档了解有关碰撞体类型的更多信息)。
选中此选项可将这些碰撞体类型包含在粒子发生碰撞时响应的对象组内。如果取消选中此选项,粒子仅响应与静态碰撞体的碰撞。
Voxel Size 体素 (voxel) 表示三维空间中的常规网格上的值。使用 Medium 或 Low 质量碰撞时,Unity 会在网格结构中缓存碰撞。此设置控制着网格大小。较小的值可提供更高的准确性,但会占用更多内存,效率也会降低。

注意:仅当 Collision Quality 设置为 Medium 或 Low 时,才能访问此属性。
Collider Force 在粒子碰撞后对物理碰撞体施力。这对于用粒子推动碰撞体很有用。
Multiply by Collision Angle 向碰撞体施力时,根据粒子与碰撞体之间的碰撞角度来缩放力的强度。掠射角将比正面碰撞产生更小的力。
Multiply by Particle Speed 向碰撞体施力时,根据粒子的速度来缩放力的强度。快速移动的粒子会比较慢的粒子产生更大的力。
Multiply by Particle Size 向碰撞体施力时,根据粒子的大小来缩放力的强度。较大的粒子会比较小的粒子产生更大的力。
Send Collision Messages 如果选中此复选框,则允许从脚本中通过 OnParticleCollision 函数检测粒子碰撞。
Visualize Bounds 在 Scene 视图中预览每个粒子的碰撞球体。

当其他对象围绕粒子系统时,通常情况下,粒子与这些对象相互作用才会使效果更有说服力。例如,水或碎片应该被坚固的墙壁阻挡而非直接穿过墙壁。启用 Collision 模块后,粒子可与场景中的对象发生碰撞。

通过从弹出菜单中选择 World 模式,可设置粒子系统来使其粒子与场景中的任何碰撞体碰撞。此外,也可使用 Collides With 属性根据碰撞体所在的层来禁用碰撞体。弹出菜单还有一个 Planes 模式选项,可用于向场景中添加一组不需要碰撞体的平面。此选项对于简单的地板、墙壁和类似对象非常有用,并且处理器开销低于 World 模式。

启用 Planes 模式后,可通过 Planes 属性添加一组变换(通常为空游戏对象)。平面在对象的局部 XZ 平面中无限延伸,其中以正 Y 轴表示平面的法线矢量。为了协助开发,无论对象本身是否具有任何可见的网格,平面都将在场景中显示为辅助图标。辅助图标可显示为线框网格或实体平面,也可进行缩放。但是,缩放仅适用于可视化;碰撞平面本身在场景中无限延伸。

启用碰撞后,粒子的大小有时会成为问题,因为它的图形在与表面接触时可能被裁剪。这种情况可能导致粒子在停止或反弹之前在一定程度上“下沉”到表面中。Radius Scale 属性通过定义粒子的近似圆形半径(以其实际大小的百分比形式)来解决此问题。此大小信息用于防止裁剪并避免下沉效应。

当粒子表示实体对象时,__Dampen__ 和 Bounce 属性非常有用。例如,砾石在抛出时往往会在坚硬的表面上反弹,但是雪球粒子在碰撞时可能会失去速度。Lifetime Loss 和 Min Kill Speed 有助于减少碰撞后残留颗粒的影响。例如,火球在空中飞行时可能会持续几秒钟,但在碰撞后,单独的火焰粒子应该快速消散。

如果启用了 __Send Collision Messages__,还可从脚本中检测粒子碰撞。脚本可附加到带有粒子系统的对象,也可附加到带有碰撞体的对象。通过检测碰撞,可将粒子用作游戏中的活动对象,例如飞弹、魔法和能量块 (power-up)。请参阅 MonoBehaviour.OnParticleCollision 脚本参考页面以了解更多详细信息和示例。

World Collision Quality

World Collision 模块具有 Collision Quality 属性,可将其设置为 HighMedium 或 Low。当 Collision Quality 设置为 Medium (Static Colliders) 或 Low (Static Colliders) 时,碰撞使用一组体素(3D 网格上的值)来缓存先前的碰撞,从而在以后的帧中快速重用。

该缓存由每个体素中的平面组成,其中的平面表示该位置处的碰撞表面。在每个帧上,Unity 都会检查缓存中是否有该粒子位置的平面,如果有,则 Unity 将其用于碰撞检测。否则会查询物理系统。如果返回了碰撞,则会将其添加到缓存中,以便在后续帧上快速进行查询。

这是近似算法,因此可能存在一些缺失的碰撞。可通过减小 Voxel Size 值来帮助解决这个问题;但是,这样做会占用额外的内存,效率也会降低。

Medium 和 Low 之间的唯一区别是允许系统在每帧查询物理系统的次数。Low 每帧的查询次数少于 Medium。一旦超出每帧预算,只能将缓存用于所有其余粒子。这样一来可能导致缺失的碰撞增加,直到更全面填充缓存为止。

Triggers 模块

粒子系统能够在与场景中的一个或多个碰撞体交互时触发回调。当粒子进入或离开碰撞体时,或在粒子位于碰撞体内部或外部时,可触发回调。

您可以使用回调作为粒子进入碰撞体时销毁粒子(例如防止雨滴穿透屋顶)的简单方法,也可使用回调来修改任何或所有粒子的属性。

Triggers 模块还提供 Kill 选项(用于自动移除粒子)和 Ignore 选项(用于忽略碰撞事件),如下所示。

unity-粒子系统参数_第18张图片

粒子系统 Triggers 模块

要使用该模块,首先添加需要创建触发器的碰撞体,然后选择要使用的事件。

可选择在粒子处于以下状态时触发事件:

  • 位于碰撞体的边界范围内
  • 位于碰撞体的边界范围外
  • 进入碰撞体的边界范围
  • 离开碰撞体的边界范围
属性: 功能:
Inside 如果希望在粒子位于碰撞体内时触发事件,请选择 Callback。如果希望在粒子位于碰撞体内时触发事件,请选择 Ignore。选择 Kill 可销毁碰撞体内的粒子。
Outside 如果希望在粒子位于碰撞体外时触发事件,请选择 Callback。如果希望在粒子位于碰撞体外时触发事件,请选择 Ignore。选择 Kill 可销毁碰撞体外的粒子。
Enter 如果希望在粒子进入碰撞体时触发事件,请选择 Callback。如果希望在粒子进入碰撞体时触发事件,请选择 Ignore。选择 Kill 可在粒子进入碰撞体时销毁粒子。
Exit 如果希望在粒子离开碰撞体时触发事件,请选择 Callback。如果希望在粒子离开碰撞体时触发事件,请选择 Ignore。选择 Kill 可在粒子离开碰撞体时销毁粒子。
Radius Scale 此参数用于设置粒子的碰撞体边界,让事件在粒子接触碰撞体之前或之后出现。例如,您可能希望粒子在弹回之前看起来稍微穿透碰撞体对象的表面,在这种情况下便可将 Radius Scale 设置为略小于 1。请注意,当事件实际触发时,此设置不会更改,但可以延迟或提前触发器的视觉效果。
- 输入 1 表示事件在粒子接触碰撞体时出现
- 输入小于 1 的值表示触发器在粒子穿透碰撞体之前出现
- 输入大于 1 的值表示触发器在粒子穿透碰撞体之后出现
Visualize Bounds 此设置可在 Editor 窗口中显示粒子的碰撞体边界。

在回调内部,应使用 ParticlePhysicsExtensions.GetTriggerParticles()(连同要指定的 ParticleSystemTriggerEventType)确定哪些粒子符合哪个标准。

下面的示例会导致粒子在进入碰撞体时变为红色,然后在离开碰撞体的边界时变为绿色。

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

[ExecuteInEditMode]
public class TriggerScript : MonoBehaviour
{
    ParticleSystem ps;

    // 这些列表用于包含与每帧的触发条件
    // 匹配的粒子。
    List enter = new List();
    List exit = new List();

    void OnEnable()
    {
        ps = GetComponent();
    }

    void OnParticleTrigger()
    {
        // 获取与此帧的触发条件匹配的粒子
        int numEnter = ps.GetTriggerParticles(ParticleSystemTriggerEventType.Enter, enter);
        int numExit = ps.GetTriggerParticles(ParticleSystemTriggerEventType.Exit, exit);

        // iterate through the particles which entered the trigger and make them red
        for (int i = 0; i < numEnter; i++)
        {
            ParticleSystem.Particle p = enter[i];
            p.startColor = new Color32(255, 0, 0, 255);
            enter[i] = p;
        }

        // 迭代离开触发器的粒子并使它们变绿
        for (int i = 0; i < numExit; i++)
        {
            ParticleSystem.Particle p = exit[i];
            p.startColor = new Color32(0, 255, 0, 255);
            exit[i] = p;
        }

        // 将修改后的粒子重新分配回粒子系统
        ps.SetTriggerParticles(ParticleSystemTriggerEventType.Enter, enter);
        ps.SetTriggerParticles(ParticleSystemTriggerEventType.Exit, exit);
    }
}

结果如下图所示:

unity-粒子系统参数_第19张图片

Editor 视图

unity-粒子系统参数_第20张图片

Sub Emitters 模块

在此模块中可设置子发射器。这些子发射器是在粒子生命周期的某些阶段在粒子位置处创建的附加粒子发射器。

属性

属性 功能
Sub Emitters 配置一个子发射器列表,并选择它们的触发条件以及它们从父粒子继承的属性。

许多类型的粒子都会在其生命周期的不同阶段产生一些效果,而这也可使用粒子系统来实现。例如,子弹离开枪管时可能伴随着一缕烟尘,火球可能会在撞击时爆炸。您可以使用子发射器来创建诸如此类的效果。

子发射器是在场景中创建的或来自预制件的普通粒子系统对象。这意味着子发射器还可以有自己的子发射器(这种类型的布置对于像烟花这样的复杂效果很有用)。但是,虽然使用子发射器生成大量粒子非常容易,但这可能非常耗费资源。

要触发子发射器,可使用以下条件:

  • __Birth__:粒子的创建时间。
  • __Collision__:粒子与对象发生碰撞的时间。
  • __Death__:粒子的销毁时间。
  • __Trigger__:粒子与触发碰撞体相互作用的时间。
  • __Manual__:仅在通过脚本进行请求时触发。请参阅 ParticleSystem.TriggerSubEmitter。

请注意,__CollisionTriggerDeath__ 和 Manual 事件只能使用 Emission 模块中的爆发发射。

此外,还可使用 Inherit 选项将属性从父粒子转移到每个新创建的粒子。可转移属性包括大小、旋转、颜色和生命周期。要控制速度的继承方式,请在子发射器系统上配置 Inherit Velocity 模块。

通过设置“Emit Probability”属性,还可以配置子发射器事件将触发的概率。 值1保证事件将触发,而值越低则概率越低。

Texture Sheet Animation 模块

粒子的图形不必是静止图像。此模块允许您将纹理视为可作为动画帧进行播放的一组单独子图像。

Grid 模式属性

unity-粒子系统参数_第21张图片

属性 功能
Mode 弹出菜单 选择 Grid 模式。
Tiles 纹理在 X(水平)和 Y(垂直)方向上划分的区块数量。
Animation Animation 模式可设置为 Whole Sheet 或 Single Row__(即精灵图集的每一行代表一个单独的动画序列)。 | | Random Row| 随机从精灵图集选择一行以生成动画。仅当 Animation__ 模式设置为 Single Row 时,此选项才可用。
Row 从精灵图集选择特定行以生成动画。仅当选择 Single Row 模式且禁用 Random Row 时,此选项才可用。
Frame over Time 通过一条曲线指定动画帧随着时间的推移如何增加。
Start Frame 允许指定粒子动画应从哪个帧开始(对于在每个粒子上随机定相动画非常有用)。
Cycles 动画序列在粒子生命周期内重复的次数。
Flip U 按一定的粒子比例水平镜像纹理。较高的值会翻转更多的粒子。
Flip V 按一定的粒子比例垂直镜像纹理。较高的值会翻转更多的粒子。
Enabled UV Channels 允许具体指定粒子系统影响的 UV 流。

Sprite 模式属性

unity-粒子系统参数_第22张图片

属性 功能
Mode 弹出菜单 选择 Sprites 模式。
Frame over Time 通过一条曲线指定动画帧随着时间的推移如何增加。
Start Frame 允许指定粒子动画应从哪个帧开始(对于在每个粒子上随机定相动画非常有用)。
Cycles 动画序列在粒子生命周期内重复的次数。
Flip U 按一定的粒子比例水平镜像纹理。较高的值会翻转更多的粒子。
Flip V 按一定的粒子比例垂直镜像纹理。较高的值会翻转更多的粒子。
Enabled UV Channels 允许具体指定粒子系统影响的 UV 流。
Time Mode Choose how the Particle System
 samples frames in the animation.
    Lifetime Sample frames using an Animation Curve over the lifetime of the particle.
    Speed Sample frames based on the speed of the particle. A speed range specifies the minimum and maximum speed range for the frame selection.
    FPS Sample frames based on the specified frames-per-second value.
Row Mode Make the Particle System choose a row from the Texture sheet to produce the animation. This property is only available when the Animation mode is set to Single Row.
    Custom Use a specific row of the Texture sheet for the animation.
    Random Randomly select a row for each particle when producing the animation.
    Mesh
 Index
Select a row based on the Mesh index assigned to a particle. This is useful when you want to ensure that a particle using a particular Mesh also uses the same Texture.
Random Row Chooses a row from the sheet at random to produce the animation. This option is only available when Single Row is selected as the Animation mode.
Tiles The number of tiles the Texture is divided into in the X (horizontal) and Y (vertical) directions.

粒子动画通常比角色动画更简单,细节级别更低。在可单独看到粒子的系统中,动画可用于表现动作或移动。例如,火焰可能会闪烁,成群的昆虫可能振动或颤抖,好像在拍打翅膀。在粒子形成单个连续实体(如云团)的情况下,动画粒子有助于增添能量和运动效果。

您可以使用 Single Row 模式为粒子创建单独的动画序列,并通过脚本在动画之间切换。这对于创建变体或在碰撞后切换到不同动画非常有用。Random Row 选项非常适合用于打破粒子系统中明显的规律性(例如,一组火焰对象全部一遍又一遍重复完全相同的闪烁动画)。此选项也用于每行的单个帧,从而生成具有随机图形的粒子。此选项可用于打破诸如云之类的对象中的规则性,或者用于从单个系统产生不同类型的碎片或其他对象。例如,一把大口径枪可能会发射出一堆钉子、螺栓、球和其他飞弹,汽车碰撞效果可能会导致发射出弹簧、汽车油漆、螺钉和其他金属部件。

UV 翻转是为效果添加更多视觉多样性而无需创建其他纹理的好方法。

从 Mode 下拉选单中选择 Sprites 选项,可以定义要为每个粒子显示的精灵列表,而不是使用纹理上的一组常规帧。使用此模式可以利用精灵的许多功能,例如精灵打包器 (Sprite Packer)、自定义轴心和每个精灵帧的不同大小。Sprite Packer 可帮助在不同粒子系统之间共享材质,方法是将纹理整理成图集,从而通过动态批处理 (Dynamic Batching) 提高性能。使用此模式时需要注意一些限制。最重要的一点,附加到粒子系统的所有精灵必须共享相同的纹理。通过使用多模式精灵 (Multiple Mode Sprite) 或使用 Sprite Packer 即可实现此目的。如果为每个精灵使用自定义轴心点,请注意不能在它们的帧之间进行混合,因为每个帧之间的几何体会有所不同。仅支持简单精灵,而不支持 9 切片精灵。另外请注意,网格粒子不支持自定义轴心以及变化的精灵大小。

Lights 模块

使用此模块可将实时光照添加到一部分粒子。

unity-粒子系统参数_第23张图片

属性

属性 功能
Light 分配一个光照预制件来描述粒子光照外观。
Ratio 一个介于 0 和 1 之间的值,表示将接受光照的粒子的比例。
Random Distribution 选择是随机分配还是定期分配光照。设置为 true 时,每个粒子都有根据 Ratio 值随机接受光照的机会。较高的值可增加粒子接受光照的概率。设置为 false 时,由 Ratio 控制新创建的粒子接受光照的频率(例如,每第 N 个粒子将接受光照)。
Use Particle Color 设置为 True 时,光照的最终颜色将通过其附加到的粒子的颜色进行调制。如果设置为 False,则使用光照颜色而不进行任何修改。
Size Affects Range 启用此属性后,在光照中指定的__范围 (Range)__ 将受到粒子大小的影响。
Alpha Affects Intensity 启用此属性后,光照的__强度 (Intensity)__ 将受到粒子 Alpha 值的影响。
Range Multiplier 使用此曲线在粒子的生命周期内将一个自定义乘数应用于光照范围。
Intensity Multiplier 使用此曲线在粒子的生命周期内将一个自定义乘数应用于光照强度。
Maximum Lights 使用此设置可避免意外创建大量光照,大量光照可能会使 Editor 无响应或使应用程序运行速度非常慢。

Lights 模块是一种为粒子效果添加实时光照的快速方法。此模块可用于使系统将光照投射到周围环境,例如可用于火、烟花或闪电。此外,还可通过该模块让光照从所附着的粒子继承各种属性。这样可以使粒子效果本身的发光更加逼真。例如,为了实现此目的,可使光照随其粒子淡出并使它们共享相同的颜色。

该模块可以非常快速地创建大量实时光照,但实时光照有很高的性能成本,尤其是在前向渲染模式下。如果光照还要投射阴影,性能成本会更高。为了防止意外调整发射速率并因此导致创建数千个实时光照,应使用 Maximum Lights 属性。创建的光照数量超过目标硬件的管理能力可能会导致速度降低和无响应的问题。

Trails 模块

使用此模块可将轨迹添加到一部分粒子。此模块与轨迹渲染器 (Trail Renderer) 组件共享许多属性,但提供了将轨迹轻松附加到粒子以及从粒子继承各种属性的功能。轨迹可用于各种效果,例如子弹、烟雾和魔法视觉效果。

unity-粒子系统参数_第24张图片

处于 Particles 模式的 Trails 模块

unity-粒子系统参数_第25张图片

处于 Ribbon 模式的 Trails 模块

属性

属性: 功能:
Mode 选择如何为粒子系统生成轨迹。
Particle 模式可创建每个粒子在自身路径中留下固定轨迹的效果。
Ribbon 模式可创建根据存活时间连接每个粒子的轨迹带。
Ratio 一个介于 0 和 1 之间的值,表示已分配轨迹的粒子的比例。Unity 随机分配轨迹,因此该值表示概率。
Lifetime 轨迹中每个顶点的生命周期,表示为所属粒子的生命周期的乘数。当每个新顶点添加到轨迹时,该顶点将在其存在时间超过其总生命周期后消失。
Minimum Vertex Distance 定义粒子在其轨迹接收新顶点之前必须经过的距离。
World Space 启用此属性后,即便使用 Local Simulation Space__,轨迹顶点也不会相对于粒子系统的游戏对象移动。相反,轨迹顶点将被置于世界空间中,并忽略粒子系统的任何移动。 | | Die With Particles| 如果选中此框,轨迹会在粒子死亡时立即消失。如果未选中此框,则剩余的轨迹将根据自身的剩余生命周期自然到期。 | | Ribbon Count| 选择要在整个粒子系统中渲染的轨迹带数量。值为 1 将创建连接每个粒子的单个轨迹带。但是,大于 1 的值将创建连接每第 N 个粒子的轨迹带。例如,使用值 2 时,将有一条轨迹带连接粒子 1、3、5,另一条轨迹带连接粒子 2、4、6,以此类推。粒子的排序取决于它们的存活时间。 | | Split Sub Emitter Ribbons| 在用作子发射器的系统上启用此属性时,从同一父系统粒子生成的粒子将共享一个轨迹带。 | | Texture Mode| 选择应用于轨迹的纹理是沿其整个长度拉伸,还是重复每 N 个距离单位。重复率是基于 Material__ 中的 Tiling 参数进行控制的。
Size affects Width 如果启用此属性(选中复选框),则轨迹宽度受粒子大小影响。
Size affects Lifetime 如果启用此属性(选中复选框),则轨迹生命周期受粒子大小影响。
Inherit Particle Color 如果启用此属性(选中复选框),则轨迹颜色由粒子颜色调制。
Color over Lifetime 通过一条曲线控制整个轨迹在其附着粒子的整个生命周期内的颜色。
Width over Trail 通过一条曲线控制轨迹沿其长度的宽度。
Color over Trail 通过一条曲线控制轨迹沿其长度的颜色。
Generate Lighting Data 通过启用此属性(选中复选框),可在构建轨迹几何体时包含法线和切线。这样允许它们使用具有场景光照的材质,例如通过标准着色器,或通过使用自定义着色器。

提示

  • 使用 Renderer 模块指定轨迹材质 (Trail Material)。
  • Unity 在每个顶点处从颜色渐变 (Color Gradient) 中采样颜色,并在每个顶点之间进行线性的颜色插值。向线渲染器 (Line Renderer) 添加更多顶点可以更接近详细的颜色渐变。

Custom Data 模块

Custom Data 模块允许您在 Editor 中定义要附加到粒子的自定义数据格式。您也可以在脚本中进行此设置。有关如何在脚本中设置自定义数据并将该数据发送到着色器的更多信息,请参阅粒子系统顶点流的相关文档。

数据可以是__矢量 (Vector)__ 的形式,包含最多 4 个 MinMaxCurve 组件或__颜色 (Color)__,此颜色是支持 HDR 的 MinMaxGradient。使用此数据可在脚本和着色器中驱动自定义逻辑。

可自定义每个曲线/渐变的默认标签,只需单击它们并输入上下文名称即可。将自定义数据传递给着色器时,了解如何在着色器中使用该数据非常有用。例如,曲线可用于自定义的 Alpha 测试,或者可使用渐变向粒子添加辅助颜色。通过编辑标签,很容易在 UI 中保留每个自定义数据条目的记录。

unity-粒子系统参数_第26张图片

Renderer 模块

Renderer 模块的设置决定了粒子的图像或网格如何被其他粒子变换、着色和过度绘制。

unity-粒子系统参数_第27张图片uploading.4e448015.gif转存失败重新上传取消unity-粒子系统参数_第28张图片

属性

属性 功能
Render Mode 如何从图形图像(或网格)生成渲染图像。请参阅下面的详细信息以了解更多信息。
    Billboard 粒子始终面向摄像机。
    Stretched Billboard 粒子面向摄像机,但会应用各种缩放(见下文)。
        Camera Scale 根据摄像机运动拉伸粒子。将此值设置为 0 可禁用摄像机运动拉伸。
        Velocity Scale 根据粒子速度按比例拉伸粒子。将此值设置为 0 可禁用基于速度的拉伸。
        Length Scale 沿着粒子的速度方向根据粒子当前大小按比例拉伸粒子。将此值设置为 0 会使粒子消失,相当于 0 长度。
    Horizontal Billboard 粒子平面与 XZ“地板”平面平行。
    Vertical Billboard 粒子在世界 Y 轴上直立,但转向面向摄像机。
    Mesh 从 3D 网格而非从纹理渲染粒子。
    None 使用 Trails 模块时,如果只想渲染轨迹并隐藏默认渲染,则可使用此属性。
Normal Direction 用于粒子图形的光照法线的偏差。值为 1.0 表示法线指向摄像机,而值为 0.0 表示法线指向屏幕中心(仅限公告牌模式)。
Material 用于渲染粒子的材质。
Trail Material 用于渲染粒子轨迹的材质。仅当启用了 Trails 模块时,此选项才可用。
Sort Mode 绘制粒子(因此覆盖粒子)的顺序。可能的值为 By Distance (from the Camera)Oldest in Front 和 Youngest in Front。系统中的每个粒子都将根据此设置进行排序。
Sorting Fudge 粒子系统排序的偏差。较低的值会增加粒子系统在其他透明游戏对象(包括其他粒子系统)上绘制的相对几率。此设置仅影响整个系统在场景中的显示位置,而不会对系统中的单个粒子执行排序。
Min Particle Size 最小粒子大小(无论其他设置如何),表示为视口大小的一个比例。请注意,仅当 Rendering Mode 设置为 Billboard 时,才应用此设置。
Max Particle Size 最大粒子大小(无论其他设置如何),表示为视口大小的一个比例。请注意,仅当 Rendering Mode 设置为 Billboard 时,才应用此设置。
Render Alignment 使用下拉选单选择粒子公告牌面向的方向。
    View 粒子面向摄像机平面。
    World 粒子与世界轴对齐。
    Local 粒子与游戏对象的变换组件对齐。
    Facing 粒子面向摄像机游戏对象的直接位置。
Enable GPU Instancing 控制是否要使用 GPU 实例化来渲染粒子系统。需要使用网格渲染模式并使用兼容的着色器。有关更多详细信息,请参阅粒子网格 GPU 实例化。
Pivot 修改用作旋转粒子中心的轴心点。
Visualize Pivot 在 Scene 视图中预览粒子轴心点。
Custom Vertex Streams 配置材质的顶点着色器中可用的粒子属性。有关更多详细信息,请参阅粒子顶点流。
Cast Shadows 如果启用此属性,阴影投射光源照在粒子系统上时将产生阴影。
    On 选择 On 启用阴影。
    Off 选择 Off 禁用阴影。
    Two-Sided 选择 Two Sided 允许从网格的任一侧投射阴影(这意味着不考虑背面剔除)。
    Shadows Only 选择 Shadows Only 使阴影可见,但网格本身不可见。
Receive Shadows 决定阴影是否可投射到粒子上。只有不透明材质才能接受阴影。
Sorting Layer 渲染器排序图层的名称。
Order in Layer 此渲染器在排序图层中的顺序。
Light Probes 基于探针的光照插值模式。
Reflection Probes 如果启用此属性,并且场景中存在反射探针,则会为此游戏对象拾取反射纹理,并将此纹理设置为内置的着色器 uniform 变量。
Anchor Override 使用光照探针或反射探针系统时用变换来确定插值位置。
Flip Mirror a proportion of the particles across the specified axes. A higher value flips more particles.
Allow Roll Control whether camera-facing particles can rotate around the Z-axis of the camera. Disabling this can be particularly useful for VR applications, where HMD roll can give undesirable results for Particle Systems.
Masking Set how the particles rendered by the Particle System behave when interacting with a Sprite Mask
.
    No Masking The Particle System does not interact with any Sprite
 Masks in the Scene
. This is the default option.
    Visible Inside Mask The particles are visible where the Sprite Mask overlays them, but not outside of it.
    Visible Outside Mask The particles are visible outside of the Sprite Mask, but not inside it. The Sprite Mask hides the sections of the particles it overlays.
Apply Active Color Space When rendering in Linear Color Space, the system converts particle colors from Gamma Space before uploading them to the GPU.
Custom Vertex Streams Configure which particle properties are available in the Vertex Shader
 of your Material. See Particle Vertex Streams for more details
Shadow Bias Move the shadows along the direction of the light, in order to remove shadowing artifacts caused by approximating volumes with billboards.

Render Mode 允许您在多个 2D 公告牌 (Billboard) 图形模式和网格 (Mesh) 模式之间进行选择。使用 3D 网格表示实体游戏对象(如岩石)时,它们可以为粒子提供额外的真实性,还可以改善云、火球和液体的体积感。使用 2D 公告牌图形时,不同的选项可用于不同的效果。

1.__Billboard 模式__适合用于表示从任何方向看起来大致相同的体积的粒子(例如云)。

2.Horizontal Billboard 模式可在粒子覆盖地面时(例如目标指示器和魔法效果)或者是平行于地面飞行或浮动的扁平对象时(例如飞镖)使用。

3.Vertical Billboard 模式使每个粒子保持直立并垂直于 XZ 平面,但允许粒子围绕其 y 轴旋转。使用正交摄像机并希望粒子大小保持一致时,此模式可能会有用。

4.Stretched Billboard 模式通过与传统动画器使用的“拉伸或挤压”技术类似的方式突出粒子的表观速度。请注意,在 Stretched Billboard 模式下,粒子将看齐面向摄像机,并且还向粒子速度看齐。无论 Velocity Scale 值如何,都会发生此看齐;即使 Velocity Scale 设置为 0,此模式下的粒子仍然向速度看齐。

Normal Direction 可用于在扁平矩形公告牌上创建球形阴影。如果使用的材质将光照应用于粒子,此设置有助于创建 3D 粒子的视觉效果。此设置仅与 Billboard 渲染模式结合使用。

 

 

 

 

你可能感兴趣的:(unity粒子特效)