在使用了Significance Manager之后,想在Particles System系统中使用这个特性。要使用它,必须先了解它,我们今天来看看Engine\Source\Runtime\Engine\Private\Particles\Emitter.cpp和Engine\Source\Runtime\Engine\Classes\Particles\Emitter.h的源码。

在看之前,我们先把#define的一些细节过一下,要不然我们不能很好的明白这个里面的一些定义,我写了如下的测试用例:


上面的B展开之后是这个样子的:

__LINE__ 及 __FILE__ 是宏指示,#line指令可以改变它的值,简单的讲,编译时,它们包含程序的当前行数和文件名。
有了这些知识,我们再来看上面的宏定义:

相关联的代码有:

根据我们之前学的知识点,我们可以得出展开成这样:

这是什么意思呢?是实现了一个名为FParticleSpawnSignature的4参数delegate。其中有个explicit关键词,explicit的作用是可以避免不合时宜的类型变换,这里有详细实验和说明。
后面的几个宏定义也是差不多的意思,就不展开讲了,这个类本身也没有什么太多可以说的地方,它基本上就是一个包装类,里面实际起作用的是ParticleSystemComponent

后面看机会,我再来把ParticleSystemComponent这个类来看看。
网友评论