LibGDX ParticleEffectPool 问题
LibGDX ParticleEffectPool issue
我在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);
}
渲染期间():
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() 在被添加到池中后立即为真。所以在render函数中被free了,就没有机会被绘制了。
我发现重置效果可以解决我的问题。
请添加effect.reset();获取语句后。
我在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);
}
渲染期间():
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() 在被添加到池中后立即为真。所以在render函数中被free了,就没有机会被绘制了。
我发现重置效果可以解决我的问题。
请添加effect.reset();获取语句后。