我一直在 XNA 中制作粒子系统,我正在尝试创建两种粒子效果。烟花爆炸和喷泉烟花。
我遇到的问题是,当我将新粒子添加到爆炸中时(我这样做很快,因为我希望它们都同时产生)帧速率大大下降。
我想知道是否有人可以解决这个问题。我看到官方示例使用了队列方法。这对我面临的问题有帮助吗?还是会使程序加载速度变慢,因为它必须在开始时将所有这些粒子加载到队列中?
添加新粒子:
if (isActive)
{
timeSinceLastEmission += gameTime.ElapsedGameTime.Milliseconds;
if (emitterFrequency == 0 || timeSinceLastEmission >= emitterFrequency)
{
emitterFrequency = emissionInterval;
for (int i = 0; i < Math.Round(timeSinceLastEmission / emitterFrequency); i++)
{
if (particleList.Count < MaxParticles)
addParticle();
}
timeSinceLastEmission = 0;
}
}
绘图功能:
public void draw(SpriteBatch spriteBatch)
{
spriteBatch.Begin();
for (int i = 0; i < particleList.Count; i++)
{
spriteBatch.Draw(particleList[i].texture,
particleList[i].position,
null,
particleList[i].color,
particleList[i].rotation,
particleList[i].origin,
particleList[i].textureScale,
SpriteEffects.None,
0);
}
spriteBatch.End();
}
任何帮助将不胜感激。