先po出代码看看吧
local explosionNode = cc.ParticleSystemQuad:create("explosion.plist")
local batchNode = cc.ParticleBatchNode:createWithTexture(explosionNode:getTexture())
explosionNode:center()
explosionNode:setAutoRemoveOnFinish(true)
-- explosionNode:addTo(self)
explosionNode:addTo(batchNode)
batchNode:addTo(self)
local explosionNode2 = cc.ParticleSystemQuad:create("explosion.plist")
explosionNode2:pos(100, 100)
explosionNode2:setAutoRemoveOnFinish(true)
-- explosionNode2:addTo(self)
explosionNode2:addTo(batchNode)
local explosionNode3 = cc.ParticleSystemQuad:create("explosion.plist")
explosionNode3:pos(200, 200)
explosionNode3:setAutoRemoveOnFinish(true)
-- explosionNode3:addTo(self)
explosionNode3:addTo(batchNode)
```
这里既是不使用BatchNode,直接添加效果也是一样的
glcall在两种情况下都是1,顶点绘制基本上也没有太大变化
如果没有setAutoRemoveOnFinish,则batchNode的那种最后顶点数会很多,应该是batchNode没有remove的原因
主要就是不理解到底BatchNode优化了哪些东西
还有一点就是explosion.plist是使用ParticleDesigner导出的
查看里面的plist文件,有一个key是textureFileName
而如果这个key还下面的textureImageData同时存在
那这里就会报出如下错误
看了好多例子都是这样写的,看了下源码,发现如果有名字,其实就没有直接去读取textureImageData了
最终我是直接把plist中的textureFileName去掉了,不过感觉应该导出了这样也是可以用才对
最后还是希望求教下关于ParticleBatchNode的优化到底体现在哪里?
如果有,为什么我的这个demo却没有效果?
explosion.zip (6 KB)