粒子节点的服用

做的消消乐消除特效 复用的比较多 所以使用了对象池
let particle = cc.loader.getRes(“res/particle/particle_Piece_” + color, cc.ParticleAsset)
let node = null//
let script = brick.getComponent(fangkuai)
for (let i = 0; i < script.mark; i++) {
if (this.pool.size() > 0) {
node = this.pool.get();
console.log(“取出一个节点”)
} else {
node = new cc.Node();
node.addComponent(cc.ParticleSystem)
console.log(“创建一个粒子”)
this.node.addChild(node);

        }
        node.getComponent(cc.ParticleSystem).file = particle;
        let point = this.node.convertToNodeSpaceAR(this.fangkuai.convertToWorldSpaceAR(cc.v2(brick.x + 65 * (i + 1 / 2), brick.y)));
        node.x = point.x;
        node.y = point.y;
        node.getComponent(cc.ParticleSystem).resetSystem();
        node.getComponent(cc.ParticleSystem).scheduleOnce(function () {
            node.getComponent(cc.ParticleSystem).stopSystem();
            this.pool.put(node);
            console.log("放进一个")
        }.bind(this), 4)
    }

往后玩的时候取出来的数量没问题 但是播放的特效很少 每次消除取出来的粒子节点最少是8个 播放的却只有两三个 ,求请教 什么问题 手动狗头!!!

有demo么,这里代码只有你怎么创建的,没有用的地方以及回收的地方,看不出来

getParticle(color, brick) {

    let particle = cc.loader.getRes("res/particle/particle_Piece_" + color, cc.ParticleAsset)
    let node = null//
    let script = brick.getComponent(fangkuai)
   //获取得
    for (let i = 0; i < script.mark; i++) {
        if (this.pool.size() > 0) {
            node = this.pool.get();
            console.log("取出一个节点")
        } else {
            node = new cc.Node();
            node.addComponent(cc.ParticleSystem)
            console.log("创建一个粒子")
            this.node.addChild(node);

        }
        node.getComponent(cc.ParticleSystem).file = particle;
        let point = this.node.convertToNodeSpaceAR(this.fangkuai.convertToWorldSpaceAR(cc.v2(brick.x + 68 * (i + 1 / 2), brick.y)));
        node.x = point.x;
        node.y = point.y;
        node.getComponent(cc.ParticleSystem).resetSystem();


      //回收得
        node.getComponent(cc.ParticleSystem).scheduleOnce(function () {
           node.getComponent(cc.ParticleSystem).file = null;
            this.pool.put(node);
            console.log("放进一个")
        }.bind(this), 4)
    }
}

有回收的

打扰了 解决了 手动狗头 自己知识储备太少

内服外敷,三天包好

1赞

老哥碰到过 从对象池取出粒子后, 粒子会在上次放回对象池的地方闪现一下 这个问题吗

这倒没有,你放回对象池前把粒子节点隐藏掉呗