【UE4】NiagaraSystem / ParticleSystem 自动添加 Module

本文记录在 Niagara 和 Cascade 编辑器中分别对 NiagaraSystem 和 ParticleSystem 特效的发射器自动添加 Module 的方法,目的在于批量、自动添加美术(或程序)所需的模块,便于美术做通用效果,便于程序做通用接口

一、背景

  Particle 和 Cascade (ParticleSystem 的编辑器的名称)相关知识和术语可以参考:ParticleSystem
  Niagara 编辑器与 Cascade 表现上看结构类似,但是实际复杂很多,大体结构都如下图所示:
在这里插入图片描述

  都是 Parameters -> Modules -> Emitters -> System 的四层结构,其中:

  • System - 指的就是这整个特效资源
  • Emitters - 指每一个发射器(由他们控制发射粒子,不管是 Sprite、Mesh、Ribbon 还是其他),编辑器中竖着的一整条
  • Modules - 指每一个模块,控制发射器的不同属性和功能,编辑器中每一个横着的一条
  • Parameters - 指每一个模块中的参数,可以由美术人员配置,也可在程序中由程序控制

  其中:

  • System - 运行时会变成 Component,ParticleSystem 创建出 UParticleSystemComponent,NiagaraSystem 创建出 UNiagaraComponent
  • Emitters - 静态时是 UParticleEmitterUNiagaraEmitter,运行时就是 FParticleMeshEmitterInstanceFNiagaraEmitterInstance
  • Modules - Particle 的都是代码写死的,都在 Engine\Source\Runtime\Engine\Classes\Particles 文件夹下,可以用的就只有这么多种,比如图中的 ColorOverLife 代码中就是 UParticleModuleColorOverLife;而 Niagara 的是资产,可以认为都是蓝图,引擎自带的都在 Engine\Plugins\FX\Niagara\Content\Modules 目录下,当然也可以自己连一下自己用,作为自己项目的资产,非常灵活好用。
  • Parameters - 可以配置的参数,Cascade 也都是固定的,如果像开给外部,让蓝图或者程序设置,可以像下图这样设置成 Parameter 即可,蓝图或者代码就可以 SetVectorParameter("ABC", DummyVec); 这样控制了;Niagara 不太一样,需要在 UserExposed 中添加一个参数,并且把参数和想用的输入关联上之后,在外部控制(外部只能设置 User Expoosed 的参数,感觉很不爽= =)

在这里插入图片描述

二、具体方法

  两种特效进行自动添加 Module 的前提都是在代码中能拿到这个特效资源,不管是在 Content Browser 中打开还是多选,保存时触发还是有按钮统一执行,都可以(Niagara 可能不行,需要把编辑器打开)。

2.1 ParticleSystem

参考在 Cascade 中右键新增一个 Emitter 时的代码:void FCascade::OnNewEmitter(),会自动添加几个默认的 Module(UParticleSpriteEmitter::SetToSensibleDefaults()),比如 Life,直接照抄引擎即可:

// Lifetime module
UParticleModuleLifetime* LifetimeModule = NewObject<UParticleModuleLifetime>(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值