我正在创建一个包含很多块的游戏。它们是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更新并绘制它?或者根本没关系? (最后的解决方案需要通过列表两次)
答案 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));
}