有没有比较好的给每个Niagara发射器指定一个最大粒子数量的做法?

你好,

不建议用Allocation Mode限制粒子数量, 因为把允许的最大粒子量设定为预分配的粒子量会影响内存, 可以在Niagara编辑器或Debugger里比较不同allocation mode的内存开销.

[Image Removed]在Spawn Module里控制SpawnInfo会更合理一些, 但Emitter.NumParticles注释有标明获取的是当前Emitter在模拟开始时的粒子量, 无法知道你在particle update阶段杀死的粒子, 推测这是造成一帧delay的原因. 而且我感觉对于持续发射的效果, 如果粒子LifeTime比较接近, 这样到达上限后停止发射很难避免空档的现象.

我个人感觉还是从每帧可发射的粒子量而不是粒子总量做限制来保证性能会更好一些, 就像现在EffectType的scalability那里的设置, 对发射量做缩放,对效果的影响小, 还可以在particle update里读取到这个缩放值(Engine.Emitter.SpawnCountScale)适量调整粒子大小, 进一步弥补粒子量减小的视觉差异.

另外还有一点, 杀死粒子一般是设置Age>LifeTime, 或者DataInstance.Alive==0; VisibilityTag只是控制粒子用哪个render渲染或者不渲染, 但仍然有模拟开销.