我在XNA游戏中得到了lagg。这是因为我投入了太多的敌人。如果我删除它们中的一部分,就不再有了lagg。是否可以删除lagg?要做到这一点,我想我可以逐个更新它们。它不能正常使用if()。我所有的敌人都是这样投入的:
List<enemy1> enemies1= new List<enemy1>();
LoadContent()
{
foreach(enemy1 enemy in enemies1)
enemy.Load(Content);
enemies1.Add(new enemy1(new Vector2(500,500)));
}
Update(GameTime gameTime)
{
foreach(enemy1 enemy in enemies1)
enemy.Update(gameTime);
}
Draw(SpriteBatch spriteBatch)
{
foreach(enemy1 enemy in enemies1)
enemy.Draw(spriteBatch);
}
杀戮后我也删除它们。地图有点大(12700x12700)
答案 0 :(得分:0)
将绘图功能更改为此
Draw(SpriteBatch spriteBatch, GraphicsDevice device)
{
Point tempPoint;
foreach (enemy1 enemy in enemies1)
{
tempPoint = new Point((int)enemy.Position.X, (int)enemy.Position.Y)
if (device.Viewport.Bounds.Contains(tempPoint))
enemy.Draw(spriteBatch);
}
}
答案 1 :(得分:0)
你在哪里调用spritebatch.begin()?
我有一种感觉,你在enemy.draw()中调用它。你应该只调用一次,如下所示:
Draw(SpriteBatch spriteBatch)
{
spriteBatch.begin();
foreach(enemy1 enemy in enemies1)
enemy.Draw(spriteBatch);
spriteBatch.end();
}