我正在制作一个使用粒子效果进行爆炸的 libGDX 游戏。这在新手机上运行得很好,但在旧手机(在 HTC Desire 上测试)上,当屏幕上出现多次爆炸时,fps 明显滞后。
我目前正在考虑两种选择:
每个效果有很多粒子,因此减少该数量可能是一种选择,但出于一致性和美学原因,我宁愿不这样做。
使用运行粒子效果生成的动画并保存每一帧。这看起来不错并且是一致的。图像大小可能存在问题。我也看不出如何使用 libGDX 粒子实现来完成此操作。
有任何想法吗?
编辑: 一些代码片段:在 Assets 类中加载效果后:
particleFire.load(Gdx.files.internal("explosion.p"),Gdx.files.internal(""));
我在弹丸对象的构造函数中加载粒子效果。我正在主渲染循环中创建这个对象,我知道这是优化的候选对象。
explosion = new ParticleEffect(Assets.particleFire);
在渲染线程中调用此方法来绘制效果。
private void drawBlasts(float delta){
for(Missile projectile : world.missiles){
if (projectile.missileState == State.EXPLODING){
if(projectile.stateTime==0.0f) {
projectile.explosion.start();
continue;
}
projectile.explosion.setPosition(projectile.position.x, projectile.position.y);
projectile.explosion.draw(spriteBatcher, delta);
}
}
}
一段爆炸.p
- Delay -
active: false
- Duration -
lowMin: 1000.0
lowMax: 1000.0
- Count -
min: 0
max: 100
- Emission -
lowMin: 0.0
lowMax: 0.0
highMin: 250.0
highMax: 250.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Life -
lowMin: 800.0
lowMax: 800.0
highMin: 1000.0
highMax: 1000.0
relative: false
scalingCount: 3
scaling0: 1.0
scaling1: 1.0
scaling2: 1.0
timelineCount: 3
timeline0: 0.0
timeline1: 0.66
timeline2: 0.9931507
编辑2:这些效果是相加的,所以也有很好的混合。