优化无穷无尽的块列表?

时间:2012-12-07 14:23:37

标签: c# windows-phone-7 xna

我正在创建一个包含很多块的游戏。它们是48x48像素,几乎无穷无尽,但我会设置一些限制。

但是我如何优化它,我应该有一个主列表,并且每个更新决定哪个更新和基于游戏相机绘制?更新和绘制无法查看的块没有意义吗?

public override Update(GameTime gameTime)
{
  blocks = new List<Block>();

  foreach(Block b in masterblocklist)
    if( screenRect.Contains(b.Rect) )
      blocks.Add(b);

  foreach(Block b in blocks)
    b.Update(gameTime);
}

那么我应该维护视图中的块的块列表,还是应该在Update和Draw方法中检查块是否在屏幕中,ifso更新并绘制它?或者根本没关系? (最后的解决方案需要通过列表两次)

1 个答案:

答案 0 :(得分:1)

编程方面,我建议并行查询

public override Update(GameTime gameTime)
{
  var parallelQuery = from b in masterblocklist.AsParallel()
                            where screenRect.Contains(b.Rect) 
                            select b;

 // Process result sequence in parallel
 parallelQuery.ForAll(p => p.Update(gameTime));
}