大家好,首先我们来讲一下粒子系统的基础属性。
Unity粒子系统5.x基础【一】
- 目录
- 1.Duration:粒子发射器的生命。
- 2.Loop(循环播放模式)
- 3.Prewarm(预热)
- 4. Start Delay(启动动延迟)
- 5.Start Lifetime
- 6.Start Speed (初始速度):每个粒子在适当方向上的初始速度。
- 7.3D Start Size(三维初始尺寸)
- 8.Start Size(初始尺寸)
- 9. 3D Start Rotation(三维初始旋转)
- 10.Flip Rotation(翻转旋转)
- 11.Start Color(初始颜色)
- 12.Gravity Multiplier(重力调节)
- 13.Simulation Space(坐标系)
- 14.Simulation Speed
- 16.Delta Time(三角州时间)
- 17.Scaling Mode(缩放模式)
- 18.Play on Awake
- 19.Max Particles(最大粒子数)
- 20.Auto Random Seed(自动随机种子)
- 21.Stop Action
- 下一节
目录
首先我们新建一个粒子系统。如图。
然后点击新创建的粒子,观看右侧基本属性栏
1.Duration:粒子发射器的生命。
比如现在Duration为5秒,那么粒子发射器就会持续5秒处于发射状态,但值得注意的是它与单个粒子的持续时间(start Lifetime)毫不相关。
比如我把Duration和start Lifetime都设置为5秒,那么到第十秒,最后一个粒子才消失,如下。
这是因为粒子发射器最后一秒(第五秒)发射的的粒子它的生命周期是(start Lifetime)是5秒,所以在第十秒的时候它才会消失。
2.Loop(循环播放模式)
如果启用,粒子发射器将在持续时间结束时再次启动,并继续重复该周期。
也就是说,如果启用了的话Duration将变得没有意义了,因为不管Duration为多少,粒子发射器一直都会处于工作状态。
3.Prewarm(预热)
如果启用,粒子系统将被初始化,就好像它已经完成了整个周期一样(仅在以下情况下工作):环化也已启用)。
通俗来讲就是一开始就会有粒子,就好像粒子系统已经运行了一段时间。
如下图:
4. Start Delay(启动动延迟)
也就是延迟以秒为单位启动粒子系统。这个没什么好讲的。
5.Start Lifetime
单个粒子的初始生命,也就是一个粒子从出生到死亡的持续时间。我们可以看到它右边的小三角。
(1)Constant :数值,发射的所有粒子的初始生命都是这个数值。
(2)Curve:曲线,相当与以Duration(粒子发射器的生命)为X轴, Start Lifetime (单个粒子的初始生命)为Y轴。曲线上每个点的含义就是:粒子发射器第X秒发射的粒子的初始生命为Y。
如下面这个例子:
我们可以看到粒子到达的高度越来越高,这是因为刚开始发射的粒子的生命周期比较低,越到后来越来越来越高。
(3)Random Between Two Constant :单个粒子的生命周期是两个常数之间任意一个值。
(4)Random Between Two Curve:相当与以Duration(粒子发射器的生命)为X轴, Y轴的值 为横坐标切两曲线的两个点,粒子的生命周期就是是这两个点之间任意一个值。
6.Start Speed (初始速度):每个粒子在适当方向上的初始速度。
7.3D Start Size(三维初始尺寸)
如果要分别控制每个粒子在某条轴的大小,就可以使用此功能。如下图。
8.Start Size(初始尺寸)
整体改变每个粒子的初始尺寸。
9. 3D Start Rotation(三维初始旋转)
如3D Start Size(三维初始尺寸)一样 ,如果要分别控制每个轴的旋转,请启用此功能。
10.Flip Rotation(翻转旋转)
使一些粒子向相反方向旋转。这里为了看出效果你可以随便拖一张照片到粒子上面去。然后它会自动生成这个图片的材质球,可以到Materials文件夹去寻找。如图
如果Flip Rotation=1,那么就代表所有的粒子都向相反的方向旋转,如果Flip Rotation=0.5,那么就代表所有50%的粒子都向相反的方向旋转。
来看下面的例子:
1)如图,当Flip Rotation=0,3D Start Rotation的z=60度时,所有粒子正常旋转。
2)如图,当Flip Rotation=1,3D Start Rotation的z=60度时,所有粒子都是向相反方向旋转。
3)如图,当Flip Rotation=0.5,3D Start Rotation的z=60度时,有一半粒子都是向相反方向旋转。
11.Start Color(初始颜色)
在这里我们来看一下右边的小三角的第二种Gradient(梯度模式),类似与于我们上次介绍的曲线。
它有两种模式,
一种是Blend(混合模式):就是有渐变效果
一种是 Fixed (固定模式):没有渐变效果。
下面看具体效果。
这里上面是Alpha的值,下面是Color的值,鼠标右键可以加一个控制下标。如图。
下面是具体效果
可以看到颜色先是白色,再是红色,然后黑色,最后白色,是不是我们上面调的颜色顺序,也就是说以Duration为横坐标,以我们调的颜色为纵坐标来改变颜色。
12.Gravity Multiplier(重力调节)
这个值越大,那么受到重力越大。当我们模拟冰块,石头炸裂时可以给给其一个重力效果,以达更逼真的效果。
13.Simulation Space(坐标系)
这里有两种选择:
一种是Local(本地坐标系)
一种是Word(世界坐标系)
如果是Local的话,也就是说粒子还是属于本地粒子发射器的,粒子发射出来后,粒子发射器在哪里粒子就在哪里。
但是World就截然不同,它表示发射出来的粒子是属于世界的,已经不是属于粒子发射器的,所以当你移动粒子发射器,已经发射的粒子还是留在原地。
14.Simulation Speed
调整粒子系统所有粒子的速度,范围为0-1。
例如为0.1然么Start Speed(初始速度)变为原来的10%。
16.Delta Time(三角州时间)
这是什么东西呢,我们来看一下这里面的两个可选项
(1)Scaled:遵循时间比例
我们知道有些游戏时间流速和普通的不一样,而Unity也有一个专门的接口来控制它,我们可打开下面这个(Time)窗口,找到Time Scale属性,这个属性就是时间流速。Time Scale=0代表时间静止,Time Scale=1代表正常时间流速,大于1代表时间流速加快。
如果我们选择遵循时间比例,然后改变Time Scale为0整个粒子系统就静止了,如图:
(2)Unscaled:不遵循时间比例
如果不遵循时间比例的话,那么Time Scale属性的改变就不会影响粒子系统的时间流速,即它一直都是正常时间流速。
17.Scaling Mode(缩放模式)
Hierarchy, Local or Shape
Hierarchy: 只应用粒子系统每个粒子变换尺度,受父级影响。
Local :只应用粒子系统每个粒子变换尺度,忽略任何父级。
下面我们通过下面两张动态图看一下Hierarchy和Local具体区别。
(1)Hierarchy放大3倍的效果。
(2)Local 放大3倍的效果。
我们看到同样是放大三倍,Hierarchy模式下的明显比Local 模式下的大。这是因为Hierarchy模式下的粒子受其父级的影响,所以它以其父级的大小为基准进行缩放。而Local 模式下不受其父级影响,所以是正常缩放,以其父级缩放三倍的效果一样。
Shape(形状模式):将比例应用到粒子的起始位置,但不影响它们的大小。也就是只缩放形状而不改变粒子大小
如图:
18.Play on Awake
如果启用,粒子系统将在创建对象时自动启动。常用于程序的交互。
19.Max Particles(最大粒子数)
简单来说,就是一个duration内发射粒子最多数量。如果是10的话,一个duration只发射10.
20.Auto Random Seed(自动随机种子)
如果启用,粒子系统每次播放时看起来都不同。当设置为false时,系统每次播放时都是完全相同的。
21.Stop Action
当属于系统的所有粒子都死亡时,就可以让系统执行一个操作。(当一个粒子系统的所有粒子都死了,并且它的年龄超过了它的持续时间时,它就被确定停止了。对于Loop(循环粒子系统),只有在通过脚本停止系统时才会发生这种情况)。
主要有三个选项
(1)Disable:粒子系统死亡时,游戏对象被禁用。
(2)Destroy:粒子系统死亡时,游戏对象被摧毁。
(3)Callback:粒子系统死亡时,将会该游戏对象上的脚本进行查找,调用里面OnParticleSystemStopped()函数
看下面的例子:
脚本如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class StopScript : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
private void OnParticleSystemStopped()
{
print("调用了脚本里的OnParticleSystemStopped方法");
}
}
好,粒子系统的基本属性差不多讲完了。下一节该讲它的子模块了。