Unity-Particle System属性介绍(一)基本属性
什么是ParticleSystem
粒子系统是Unity中用于模拟大量粒子的行为的组件。每个粒子都有一个生命周期,包括出生、运动、颜色变化、大小变化和死亡等。粒子系统可以用来创建烟雾、火焰、水、雨、雪、尘埃、闪电和其他各种视觉效果。
开始
在项目文件下创建一个Vfx文件夹用于存放我们的Prefab资源。进入Vfx文件夹之后,右键选择Prefab,命名为testVfx后双击在Scenes界面出现一个空白对象。
Add Component中输入Particle System(之后简称PS)便可以自动添加一个带有示例的Particle System组件。
点击播放,可以见到下图效果:
基本属性
由于Particle System中属性内容复杂,将会分模块讲述。我们姑且将testVfx中的部分称之为基本属性,内容如下,可以对照目录直接跳转对应部分查看。
Duration-发射粒子的时间长度
PS发射粒子的时间长度(以秒为单位),如果勾选了下方的looping则默认设置为1。
将其设置为3并将原本的looping取消勾选,便可以发现粒子发射大约3s后停止发射。
Prewarm-预热选项
预热选项(常用于大量粒子会被发射,需要提前进行模拟的情景),仅有当looping勾选时方可进行勾选。
The Particle System looks like it has already simulated for one loop when first becoming visible.
Start Delay-开始发射的延迟时间(秒)
开始发射的延迟时间(秒),但是Duration中设计的秒数会往后顺延——原本3s结束发射,拖延到了4s结束。
Start Lifetime-粒子的生命周期
粒子的生命周期。将其设置为2之后再次点击播放,可以明显见到存在的粒子数目明显减少,消散速度变快。
StartSpeed-开始时的出发速度
开始时的出发速度,我们将其设置为20。可以见到锥形显示区域明显变大,播放后粒子移动速度加快。
3D Start Size-3D 方向伸长大小调节
如果勾选,便可以调节粒子在x,y,z轴上各自的长度。留意此处坐标轴并非是和世界坐标轴相一致,而是相对于相机的坐标轴。
我们将z设置为10,点击播放。可以发现并没有发生变化。因为z轴是垂直我们观察角度的轴,其长短变化不可视。使用右键移动视角之后发现亦是如此。
将z设置回1,将x设置为7。点击播放。
3D Start Rotation-旋转角度
如果勾选,便可以调节粒子在x,y,z轴上各自的逆时针翻转角度(度)。我们将z设置为90。
可以见到原本横条全部变为了竖条(薯条🍟)。
Flip Rotation-反翻转
设置多少比例的粒子,反着设置的3D Start Rotation进行发射。(取值范围0~1)
我们将3D Start Rotation中的z设置为45,Flip Rotation设置为0.3。
可以见到少数粒子变为顺时针翻转45°。
Start Color-开始粒子颜色
设置一开始的粒子颜色,但是非常短暂几乎不可见。
Gravity Source-重力来源
拥有 3D Physics 和 2D Physics 两个选项。根据实际项目情况进行选择即可。
Gravity Modifier-重力调节器
重力的调节器,设置为0为无重力状态,之后 True Gravity = Modifier * Gravity。
此处我们设置为1,可以看到粒子呈现往下掉的视觉效果。
Simulation Space-粒子模拟相对空间
粒子模拟空间
-
Local:粒子系统将在其父对象(一般为Particle System所属对象)的局部空间内进行模拟。这意味着粒子的位置是基于父对象的位置和旋转计算的。这对于当你想要粒子系统跟随父对象移动或旋转时非常有用。
-
World:粒子系统将在世界空间中进行模拟。这意味着粒子的位置是基于整个场景的世界坐标计算的。这对于当你想要粒子系统独立于父对象移动或旋转时非常有用。
-
Custom:粒子系统将在自定义空间中进行模拟。这是一个更高级的选项,允许你定义自己的空间变换矩阵,从而实现更复杂的粒子系统行为。
Simulation Speed-粒子模拟速度
模拟速度。我们将其设置为秒,可以见到原本结束发射时间为4秒,现在被快进2倍到2秒。
Delta Time-更新时间模式
在粒子系统中,Delta Time(ΔT)是每一帧中时间的增量,用来驱动粒子系统的更新。Delta Time 可以有两种模式:Scaled 和 Unscaled,它们的区别主要体现在时间的计算方式上。
1. Scaled Delta Time
Scaled Delta Time 是根据游戏的帧率和时间缩放(Time Scale)来计算的。也就是说,它会受到游戏时间缩放的影响。当游戏处于暂停状态(即 Time.timeScale为 0)时, Delta Time 会变为 0,这会导致粒子系统的更新暂停。此选项通常用于基于实际游戏进度更新粒子的行为。
- 适用场景:当你希望粒子系统的行为与游戏的时间流逝同步(如普通的物理模拟)时使用 Scaled
- 影响因素:
- 游戏暂停时,Delta Time 为 0。
- 如果游戏速度变慢,粒子系统的更新也会变慢。
2. Unscaled Delta Time
Unscaled Delta Time 是不受游戏时间缩放影响的时间增量。即使游戏暂停或时间缩放发生变化,Unscaled Delta Time 仍然会按照真实的时间流逝进行计算。通常用于需要不受时间缩放影响的粒子行为,比如基于真实世界时间的粒子更新,或者希望粒子系统独立于游戏的时间控制之外。
- 适用场景:当你希望粒子系统的行为独立于游戏时间流逝时(比如在暂停或时间慢速时依然希望粒子继续播放)使用 Unscaled Delta Time。
- 影响因素:
- 游戏暂停时,Unscaled Delta Time 仍然会继续计算,保持粒子的更新。
- 游戏时间缩放对粒子系统没有影响。
Scaling Mode-缩放方式
- Hierarchy:粒子系统缩放依赖于父物体的缩放,适用于需要粒子与父物体一起缩放的场景。
- Local:粒子系统的缩放独立于父物体,适用于不希望粒子系统受到父物体缩放影响的情况。
-
Shape:只将缩放应用于形状模块。这种方式下,只有粒子发射器的形状和大小会被缩放所影响,而不改变生成的粒子的大小。
Play On Awake-唤醒播放
是否在被enable时就开始播放,并且此选项会作用于所有Particle System下的这个Particle Effect。
Emitter Velocity Mode-发射速度模式
发射速度模式设置
- Transform: 根据系统的变换为粒子增加速度。这意味着如果粒子系统本身在运动或旋转,这种运动将传递给发射的粒子。
- Rigidbody: 使用与粒子系统连接在同一个游戏对象上的刚体组件。如果物体有一个刚体并且它在运动,粒子就会继承这个运动。
- Custom: 允许使用 Custom Velocity 属性指定粒子的自定义速度。
Max Particles-最大粒子数
最大粒子数,可以有效防止策划同学填了一个毁灭世界的值。: )
Auto Random Seed-行为随机化
勾选后,每次发射的行为都将不同(引入随机变量,有点像C语言里面的srand)
Stop Action-完结动作
当所有粒子发射之后,GameObject所应该执行动作。
- None:不采取任何行动。粒子系统停止后,游戏对象保持启用状态。
- Disable:禁用游戏对象。当粒子系统停止且所有粒子都消失时,游戏对象将被禁用。这可以防止游戏对象接收更新调用,从而节省CPU资源。
- Destroy:销毁游戏对象。当粒子系统停止且所有粒子都消失时,游戏对象将被销毁。这将完全移除游戏对象及其组件,释放所有相关资源。
- CallBack: 未知,占空
Culling Mode-未显示时行为模式
粒子系统未在屏幕显示上的行为模式。
-
Automatic:此选项表示当粒子系统不在屏幕上时,Unity会自动决定是否继续模拟粒子系统。具体来说,对于循环系统,它会暂停离屏模拟;而对于非循环系统,则始终模拟。
-
Pause and Catch-up:选择此选项时,当粒子系统不在屏幕上时,Unity会暂停其模拟。但是,一旦粒子系统重新进入屏幕,Unity会执行一个大型的仿真步骤来追赶时间,使得粒子看起来就像它们从未被暂停一样。
-
Pause:选择此选项时,当粒子系统不在屏幕上时,Unity会暂停其模拟。这意味着粒子系统会在粒子系统再次出现在屏幕上之前停止生成新的粒子,直到它重新出现为止。
-
Always Simulate:选择此选项时,无论粒子系统是否在屏幕上,Unity都会持续地模拟粒子系统。这意味着即使在粒子系统不在屏幕上时,也会继续生成新的粒子。
Ring Buffer Mode-粒子结束行为
-
Disabled:这是默认设置。在这种模式下,粒子在其生命周期结束后就会死亡,然后新粒子会取代旧粒子。
-
Pause Until Replaced:当粒子的生命周期结束时,它们不会立即死亡,而是会暂停,直到有新的粒子替换它们。
-
Loop Until Replaced:当粒子的生命周期结束时,它们会重置为初始状态并开始一个新的生命周期。粒子会不断循环,直到有新的粒子替换它们。对象池模式。
结语
用好Particle System是创造出优秀游戏动态美术效果的第一步。
一起加油,无限进步!