Niagara Data Channel不支持Emitter State中的Loop Delay

参考官方Niagara Data Channel的教程(Niagara Data Channels Intro | Tutorial

如果同时创建两个一样的粒子都使用NDC,假设为粒子1和粒子2。将粒子1的Emitter State的loop delay设置为0,将粒子2的Emitter State的loop delay设置为1。播放这个NDC的时候,粒子1和粒子2同时发射粒子,并没有达到预期中的粒子1先发射,然后1秒之后粒子2再发射粒子。

您好,

问题我有点没搞明白, 粒子1 和粒子2 是源自同一个data channlel的话, 一般也是由同一个emitter监听发射的, 发射时机由写入data channel的时机决定. Emitter State的loop delay主要影响的是整个Emitter的开始的延迟. 可以发我一个简单的setup看下你的使用方式么?

谢谢!

你好,不好意思,可能是我没有解释明白。

比如说创建了一个使用Niagara Data Channel的粒子系统,里面包含两个简单的Emitter(Emitter1和Emitter2)。这两个Emitter都是使用同样的一个niagara data channel。Emitter1和Emitter2唯一的区别是在Emitter1的Emitter State里面的Loop Delay没开启(或者Loop Delay为0),Emitter2的Emitter State中的Loop Delay开启并且设置为1。

预期是在Emitter1发射粒子后1秒的时候Emitter2才会发射粒子,目前看到的结果是两个Emitter同时发射了粒子。

[Image Removed][Image Removed][Image Removed][Image Removed]​

[Image Removed]谢谢

这个表现是正常的, 因为loop delay只对emitter age有影响, 而data channel的发射只和写入data channel的时机相关.

传统非data channel的效果用的一般是用spawn rate或spawn burst instantaneous发射, 你可以打开这些module看下, 其实他delay发射的原因都是读取了emitter age看是否发射, 如果想用data channel完成类似的效果, 你可以这样做:

在Particle Spawn里设置Particle的age为你希望delay的时间*-1.0;

在Particle Update里设置Particle的VisibilityTag, 让粒子仅在age>0的时候显示, 如下图.[Image Removed]

感谢,我去试试这个方案。

另外这个NDC能不能从代码层面修改来达到同样的目的呢?在NDC的SpawnInfo这一块能否改动呢?

(本来上周已经回复了的,但是貌似我的回复不见了。。。)

NDC的层面我感觉不好改, 因为data channel里的数据每帧都更新, 除非拆成两个NDC或者加一个输出给不同emitter的标记属性, 写入两次, 否则不太好实现delay;

还有一个思路就是spawn的层面, 在emitter上加一个数组, 把读取到的时间和数据都累计在上面, delay一段再spawn, 但我个人感觉不如调整particle age简单.

(抱歉, 可能是系统问题吧👀 )

我也想过拆成两个NDC,控制写入的时间不同来造成loop delay的效果,但是感觉对特效制作方面不友好,而且也不方便测试。

是的, 一个整体的效果不同元素的timing最好在一个system asset里编辑制作

好的 谢谢解答