Skip to content

粒子系统

unity-particle-vfx-system-deep-dive

一句话理解

Unity 的粒子系统就是:用大量“小图片或小 Mesh”一起运动,制造火焰、烟雾、爆炸、雨雪、魔法、命中反馈这类动态效果。

Unity 里主要有两条路线:

c
Particle System:内置组件,新手和大多数常规特效首选
Visual Effect Graph:节点式 GPU 特效,适合大量粒子和高级视觉

1. Particle System 是什么

官方文档说,Particle System 会生成并动画化大量小的 2D 图像或 Mesh,用来模拟火、云、液体等效果。

创建方式:

GameObject > Effects > Particle System

它的核心结构是:

c
Emitter:发射器,决定粒子从哪里出生
Particles:粒子本身
Modules:模块,决定粒子的生命周期、速度、颜色、大小、碰撞等
Renderer:渲染器,决定粒子最终怎么画出来
Material:材质,决定火焰、烟雾、闪光的视觉质感

2. 最常用模块

先掌握这些就够你做大部分初级特效:

c
Main:生命周期、速度、大小、颜色、循环
Emission:每秒发多少粒子,是否 Burst 爆发
Shape:从点、球、圆锥、盒子、圆环等形状发射
Velocity over Lifetime:粒子出生后怎么移动
Color over Lifetime:随时间变色或淡出
Size over Lifetime:随时间变大或变小
Noise:随机扰动,做烟雾、魔法很常用
Collision:粒子碰到地面/
Trails:拖尾
Sub Emitters:粒子死亡或碰撞时再生成新特效
Renderer:材质、排序、Billboard、Mesh 渲染

3. 一个火焰特效怎么想

火焰不是一个东西,而是一组设置:

c
Shape:小圆锥,向上发射
Start Lifetime:短一点
Start Speed:向上
Start Color:黄橙红
Color over Lifetime:橙 ->-> 透明
Size over Lifetime:先变大,再消失
Noise:轻微晃动
Renderer:Additive 或透明材质

你做特效时要问自己:

c
它从哪里出生?
出生多少?
活多久?
往哪里动?
颜色怎么变?
大小怎么变?
消失时要不要生成别的东西?

4. 一次性爆炸怎么做

爆炸通常不是持续发射,而是 Burst

c
Emission:Rate over Time = 0
Bursts:瞬间发射 30100
Lifetime:0.31
Start Speed:较高
Size over Lifetime:快速变大再消失
Color over Lifetime:亮黄 -> 橙红 -> 透明
Sub Emitters:死亡时生成烟雾

5. 代码控制

播放和停止:

c
using UnityEngine;

public class ParticleExample : MonoBehaviour
{
    public ParticleSystem effect;

    public void PlayEffect()
    {
        effect.Play();
    }

    public void StopEffect()
    {
        effect.Stop();
    }
}

命中特效常见写法:

c
using UnityEngine;

public class HitEffectSpawner : MonoBehaviour
{
    public ParticleSystem hitEffectPrefab;

    public void SpawnHitEffect(Vector3 position)
    {
        ParticleSystem effect = Instantiate(
            hitEffectPrefab,
            position,
            Quaternion.identity
        );

        Destroy(effect.gameObject, 2f);
    }
}

项目做大后,频繁特效建议用对象池,不要一直 Instantiate / Destroy

6. Visual Effect Graph 是什么

VFX Graph 是更高级的节点式特效系统。官方文档说明它使用 Scriptable Render Pipeline 渲染,并用 Compute Shader 模拟效果。

适合:

c
大量 GPU 粒子
高级魔法效果
能量场
星云
复杂烟雾
高端角色技能
HDRP/URP 项目里的高级视觉

新手顺序建议:

c
先学 Particle System
再学 Shader / Material
最后学 VFX Graph

7. 性能重点

粒子特效最容易贵在这些地方:

c
透明粒子太大,Overdraw 高
Max Particles 太多
Emission 发射率太高
Collision 开太多
Lights 模块开太多
Trails 太多
Sub Emitters 连锁生成太多
频繁 Instantiate / Destroy

优化口诀:

c
少一点粒子
小一点透明面积
短一点生命周期
少一点实时灯光
常用特效做对象池

8. 常见坑

c
粒子不显示:Renderer 没材质,或材质不适合当前渲染管线
粒子方向不对:Shape 或 Transform 朝向错
爆炸一直喷:Emission 没关 Rate over Time
烟雾太假:没有 Noise、Color over Lifetime、Size over Lifetime
特效被挡住:Sorting Layer / Order 或 Render Queue 问题
粒子太亮或太黑:材质混合模式不合适
特效播放完还留在场景里:没有销毁或回收

记住这句:

c
粒子是小图,发射器负责生,模块负责变化,Renderer 和材质负责好不好看。

参考:Unity 官方 Particle effectsParticle System componentParticle System modulesMain moduleVisual Effect Graph

文章评价

读完这篇,留下你的看法

暂无审核通过的评价。

登录账号后才能评价。

本站访客数0总站访问量0本页访问量0