LibGDX ParticleEffectPool问题

问题描述 投票:3回答:1

我在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++;
    }
}

这对我来说似乎很直接,但第一次它不起作用。

java android libgdx particle-system
1个回答
1
投票

添加到池后,effect.isComplete()立即生效。因此它在渲染功能中被释放,并且没有机会被绘制。

我发现重置效果修复了我的情况。

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

© www.soinside.com 2019 - 2024. All rights reserved.