请问粒子系统贴图怎么合批?

我这边会同时播放多个粒子动画,texture都是同一个图集的,但不知道为什么drawcall跟着动画数量飙升。
有什么办法可以做到合批吗?

它们的渲染命令的提交是否相邻呢。 比如,图1 - 图2 - 图1,会打断合批。相同的图集只是合批的一个必要条件罢了。

@jare,同样的问题,做消除游戏,效果用到大量的粒子,碰到粒子没有办法合并,导致不得不使用序列帧去替换。很多效果就不是很完美。

我也不知道,所有节点是相邻的,节点里面在渲染上只有贴图,没有其他Label什么的。
节点是cc.instantiate预制生成的,难道是这个原因导致的?

那就不清楚了,让美术出序列帧吧,对于美术人员,易如反掌:yum:

个人觉得。视觉效果,除了特别的图形处理,都不应该由程序员去做。:joy:

是美术做好导出给我的预制:innocent:

三消游戏很多都是随机效果,改成序列帧,我们的美术妹妹都要崩溃了。
一个粒子效果解决的,改成图,搞了4个小时,抠图也是很麻烦的。

cocos2dx,有一个ParticleBatchNode组件,可惜cocos creator没有。

我记得 美术不是有 粒子效果的软件吗。导出。

验证了一下,不是预制的锅,去掉ParticleSystem组件drawcall就没飙升了。感觉还是粒子系统渲染机制的问题啊 @panda @jare

跟预制体没有关系,就是粒子系统的渲染问题,加大drawcall

好吧,粒子系统还有一个就是播放完成没有设置回调的地方,都不知道什么时候回收节点:disappointed_relieved:

自己构造缓冲池,模拟粒子轨迹,冒充粒子系统。

唯一有点沾边的官方回答还是2年前的。

可以将粒子使用的图片资源也打到图集中。这里粒子需要处理一下源码,定制一下。之前源码里面都是通过读取plist,然后new一个spriteFrame给粒子的,你给他改成从SpriteAtlas中getSpriteFrame,然后给到粒子使用。当然这样保证使用粒子前,所需要的那张图集要加载进来。所以比如建筑所使用的粒子就和建筑的资源打包在一起

也只是提供了一个思路,具体实现还是得自己吃源码