2015-04-13 23 views
-1

我正在Monogame的一個小項目中工作。Monogame,滯後問題當地圖大小增加時

雖然我有一個小煩惱。目前正在加載紋理等遊戲開始,只有一次。

然後我從CSV文件中繪製地圖,所以目前我正在繪製3600個地圖的地圖,每個地圖的大小爲32x32。

要訪問tile,遊戲必須通過一系列Texture2D(陣列中的1024個tile)讀取。事情是它的滯後安靜了一點。它可以很容易地處理100瓦地圖,但在這個更大的一個它只是落後了很多?

任何人都知道爲什麼會發生這種情況?如果需要任何代碼,請讓我知道和不適當編輯我的帖子。

+0

只提供一個合理範圍的瓷磚怎麼樣?渲染無法看到的瓷磚是毫無意義的...... –

+0

@CommuSoft對於C#來說我相當新,所以我目前不知道該怎麼做,但是。 – Taylor

+0

你需要弄清楚什麼讓你的代碼變得緩慢,並且用導致緩慢的代碼來澄清你的問題。請注意,渲染10x圖塊會使代碼變慢的一個簡單事實是不夠的 - 顯然在某個時刻渲染更多的對象會壓倒系統中的一個或多個組件。用Stopwatch'es撒上你的代碼並測量(不是用戶,如果你有權訪問分析器,但如果你能得到一個,它會好得多)。 –

回答

0

這聽起來像是一個優化問題。當然,你不需要馬上畫出所有的3,600塊地圖磚 - 只有玩家可以看到的磚塊?當他們在地圖上移動時,你可以有一個事件來加載更多的瓷磚,並銷燬已經不見的瓷磚。

因此,您需要添加一種方法來跟蹤玩家可以看到的內容,並只加載此邊界內的圖塊。

想想我的世界。如果它試圖在運行時將數十億塊加載到內存中,那麼它會很快崩潰。相反,它只會渲染玩家可以看到的塊。