我在libGDX 中的ParticleEffectPool 遇到问题-第一个效果没有显示,但是为什么在那之后仍然有效?

这是设置代码:

 destroyEffect = new ParticleEffect();
 destroyEffect.load(Gdx.files.internal("destroy.txt"), Gdx.files.internal(""));

 pool = new ParticleEffectPool(destroyEffect, 10, 100);
 activeEffects = new Array<ParticleEffectPool.PooledEffect>();

当想要显示效果时,这些调用被称为:
ParticleEffectPool.PooledEffect effect = pool.obtain();

if (effect != null) {
  effect.setPosition(x, y);
  activeEffects.add(effect);
}

在render()期间:
for (int i = 0; i < activeEffects.size;) {
    ParticleEffectPool.PooledEffect effect = activeEffects.get(i);

    if (effect.isComplete()) {
       pool.free(effect);
       activeEffects.removeIndex(i);
    }
    else {
      effect.draw(batch, deltaTime);
      i++;
    }
}

对我来说,这似乎很简单,但是第一次却不起作用。

最佳答案

effect.isComplete()在添加到池中后立即为true。因此它已在render函数中释放,没有机会被绘制。

我发现重置效果可以解决我的情况。

请添加effect.reset();获得声明后。

关于java - LibGDX ParticleEffectPool问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51969205/

10-10 19:49