Unity的粒子系统(一)

Particle System

粒子系统是Unity的一个组件,在 Component -> Effect -> Particle System 可以找到,但是该组件的 Inspector 选项很多,我们来一一梳理,明白了每个选项代表的意义和应用场景,才能更好的定制符合要求的效果;
在Scene中创建一个粒子系统,默认是这样的显示:

粒子系统默认显示.gif

为了绘制的便利,我们打开粒子系统的Editor界面:
打开粒子系统的Editor界面

Particle System Editor

1. Particle System(初始化模块)

该模块是粒子系统和粒子的初始化模块,无法将其删除或禁用.

初始化模块.png

该模块定义了粒子系统初始化的基本参数.

  • Duration: 粒子系统发射粒子的时间,单位是 s ;如果选择了下面的 Looping 选项,那么表示一个生命周期的时间.
  • Looping: 如果选中,粒子系统会按照生命周期时间进行循环发射.
  • Prewarm: 预热系统,只有在循环模式先才能选择,如果开启了此项, Start Delay将不可选择.顾名思义,未开启的时候,粒子系统会发射粒子会经过一个从无到有的过程,开启后就好像跳过了这个过程,直接从第二个生命周期开始播放.
  • Start Delay: Prewarm开启状态下无效.粒子系统延迟几秒开始播放.点击选项后面的小三角可以看到选项如下(后续的很多配置项都有类似的选项,相同的就不再赘述了):
    Start Delay
    • Constant: 常量,设置一个固定数值;
    • Random Between Two Constants: 在两个常量之间随机得到一个数值.
  • Start Lifetime: 单个粒子的存活时间,点击后面的小三角后:
    Start Lifetime
    • Curve: 一个生命周期内,在特定时间发射的粒子,它的存活时间取决于对应曲线上的值.

      Curve曲线

      对应上述曲线的粒子发射.gif

    • Random Between Two Curves: 特定时刻发射的粒子存活时间为两条曲线间的随机值

  • Start Speed: 粒子的起始速度,控制选项同上.这个选项控制的只是起始速度,单个粒子在生命周期内的速度变化是另一个模块 Velocity over Lifetime 来控制的.
  • 3D Start Size: 开启此选项后可以分别控制粒子XYZ三个轴上的初始大小(但是目前测试改变Z轴没有效果,有知道的小伙伴请留言指导一下),和 Start Lifetime 一样,有四个控制选项.
  • Start Size: 粒子的起始大小, 与 3D Start Size 不能同时使用.
  • 3D Start Rotation: 开启此选项后可以分别控制粒子在每个轴的初始旋转角度.
  • Start Rotation: 默认控制粒子在Z轴的初始旋转角度,与 3D Start Rotation 不能同时使用;
  • Flip Rotation: 翻转旋转,取值是0~1,主要是针对 Start Rotation 设置的角度,如果设置的是10°,那么这个值设置的越大,会有更多的粒子以-10°的角度发射.
  • Start Color: 粒子的初始颜色,该设置有5个控制选项,如图所以,粒子系统的颜色设置一般都是这几个控制选项:
    Start Color的控制选项
    • Color: 所有的粒子都是一个颜色.
    • Gradient: 粒子系统在一个生命周期内为生成的粒子赋予对应的渐变色,点击后会出现一个操作板.
      Gradient设置.png

      设置渐变色后的粒子系统.gif

      可以看到,在粒子系统的一个生命周期内,产生的粒子的颜色是按照设置的从白到红的渐变色来设置的.
    • Random Between Two Color:粒子颜色是在指定的两个颜色之间随机获取,注意与上面渐变色的区别.
Random Between Two Color.gif
  • Random Between Two Gradient: 粒子颜色随着生命周期是在指定的两个渐变色之间随机获取,这里不再截图,请大家自行测试.
  • Random Between Two Gradient: 基本与 Random Between Two Color 一样,但是可以控制随机颜色的数量,比如可以设置在5种颜色之间随机.
  • Gravity Modifier: 重力修改器.给粒子施加一个重力效果,如果是负值,则会给粒子施加一个向上的力,值越大,受到的力效果越明显.
  • Simulation Space: 模拟空间.粒子生成后使用谁的坐标系统,一般在运动的时候才能看到效果;
    Simulation Space的设置项
    • Local: 使用粒子系统的坐标系统.
    • World: 使用场景的世界坐标系统.
    • Custom: 选择该项后,需要指定一个GO,然后粒子会使用该物体的坐标系.
Top:Local,Bottom:World
  • Simulation Speed: 模拟速度.整体改变粒子系统的播放速度,跟改变下面图中的 Playback Speed 效果是一样的,这个面板是随着粒子系统出现在Scene视图中的.
    Snip20191126_29.png
  • Delta Time: 变量时间, 在游戏中 Time. timeScale 用来控制整个游戏时间的流速,0是暂停,1是按照真实世界的时间流速运行.
    • Scaled: 被Time. timeScale控制,当游戏暂停时,粒子系统停止播放.
    • Unscaled: 不受Time. timeScale控制,游戏暂停的时候粒子系统依然播放.
  • Scaling Mode: 缩放模式,粒子的缩放模式. Gravity Modifier 属性不受此模式影响.
    • Hierarchy: 粒子的大小和运动速度不仅受到粒子系统的Scale影响,也受到父物体(如果存在)的Scale影响.
    • Local: 粒子仅受到粒子系统的Scale影响.
    • Shape: 只缩放粒子系统的发射器形状大小,对粒子没有影响.
  • Play On Awake: 选中后,粒子系统被实例化出来时会自动播放,不选中的话,需要代码控制粒子系统的播放,不影响 Start Delay 属性的设置.
  • Emitter Velocity: 发射速率.当粒子系统移动的时候,我们应该用它的 Transform 还是 Rigidbody 来计算它的速率(并不理解这个属性,烦请了解的小伙伴留言告诉我一下).
  • Max Particles: 最大粒子数.当系统中的粒子数达到此值后,将会暂停发射粒子.
  • Auto Random Seed: 选中后,每次开始模拟粒子发射时,粒子的效果都不一样,反之未选中后,每次开始模拟后,粒子的效果都一样,可以通过 Particle Effect 窗口的 Restart 来验证.
  • Random seed: 当不勾选上面的选项后,需要设置该项,给一个随机的Seed值,可以通过调节该值,找到一种符合需求的粒子发射效果,然后使用该固定的Seed值.
  • Stop Action: 停止行动.当粒子系统停止发射并且所有的粒子销毁后,持有该粒子系统的GO应该如何行动:
    • None: 默认选项,什么都不做.
    • Disable: GO的Active设置为false.
    • Destroy: 销毁该GO.
    • Callback: 为该GO添加脚本或者再原有脚本中监听以下函数:
      public void OnParticleSystemStopped()
      
      即可监听到粒子系统的完全停止.
  • Culling Mode: 剔除模式.当粒子系统从屏幕中移出的时候,对应的处理方式:
    • Automatic: 如果粒子系统是循环发射,则会暂停发射,非循环情况下不会暂停发射.
    • Pause And Catch Up: 暂停粒子播放,当再次移入屏幕时,会做额外的计算,使粒子系统看起来像没有被暂停过一样,当然是耗性能的设置,根据实际情况使用.
    • Pause: 暂停粒子发射.
    • AlwaysSimulate: 不会暂停粒子发射.
  • Ring Buffer Mode: 环形缓冲模式.控制粒子的消失方式,这个模式适合用来做脚印或者弹孔等持续性的效果.
    • Disable: 粒子在自己的生命周期后销毁.
    • Pause Until Replaced: 粒子在生命周期后并不会被销毁,保持最后的形态直至系统中的粒子数超过最大限制后立即被新粒子取代.
    • Loop Until Replaced: 这种模式跟上一种很像,在自己的生命周期后不会销毁,选择该设置后会增加一个 Loop Range 的选项:
      Loop Range

      可以设置从0 ~ 1的值,这个值表示的是粒子生命周期的比重,比如设置的是0 ~ 0.5,如果粒子的生命周期是2s,那么经过2s后,粒子会重复显示0s ~ 1(2 * 0.5)s这段时间内粒子的效果,直至超过系统最大粒子数后被新粒子取代.

2. Emission(发射模块)

粒子发射的速率,以及瞬间发射大量粒子(爆炸效果),可以在该模块进行设置.

发射模块

  • Rate over Time: 按照时间发射的粒子速率.该属性有4个配置,原理不再赘述,其中曲线的横轴是时间轴,代表的是粒子系统的生命周期.

  • Rate over Distance: 按照粒子系统移动距离发射的粒子速率.这种情况在编辑模式下不能查看,我们编写一个脚本移动粒子系统,可以看到随着粒子系统的移动,粒子在不断的发射.

    粒子系统移动时发射粒子

    该属性也有4个配置可以选择.

  • Bursts: 粒子爆发.可以用一句话来概述这个功能: 在指定的 Time 时刻, 瞬间发射 Count 设置的粒子个数, 如果 Cycles 设置为循环, 那么每隔 Interval 的时间,就会有 Probability 的概率再次爆发.要注意超过系统的最大粒子限制后就不再发射粒子了.

    • Time: 粒子爆发的时间,不能超过粒子系统的 Duration ,就算你填写一个非法的数,也会被强制修改.
    • Count: 如果选择曲线,曲线的横轴是时间轴,代表的是粒子系统的生命周期.4个配置可以选择.
    • Cycles: 从爆发时间开始的循环次数.
    • Interval: 两次循环的间隔时间.超过粒子系统的 Duration 无意义.
    • Probability: 每次爆发的可能性.

    根据图示的设置,来看一下表现效果:

    粒子爆发

暂歇片刻,我们再来看下一篇文章.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容