我用ALOT塊創建遊戲。他們是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);
}
所以我應該維持在視圖或塊的塊列表,我應該在這兩個更新和繪製方法檢查,如果塊是在屏幕矩形,ifso更新和借鑑呢?或者根本不重要? (最後的解決方案需要對直通名單兩次)
剔除像你描述的是一個方面,以提高性能。除此之外,還可以使用一種技術,即髒迴歸處理,其中只渲染已修改塊的塊,但這取決於渲染在引擎中的實際工作方式。 – Matthew
你是什麼意思優化?你在3D或2D場景中?我其實並沒有真正明白你想達到什麼目的。將不在相機外的塊稱爲「剔除」是實現這一目的的一種好方法,就是使用Quadtrees用於3D場景的2D和Octtrees。 – Carsten