有没有办法消除滞后?

时间:2014-06-12 11:50:17

标签: c# xna xna-4.0

我在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)

2 个答案:

答案 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();
}