2013-07-14 62 views
0

我正在做一個測試xna遊戲作爲一個學習練習,我有一個關於使用2D紋理的小問題。基本上,遊戲是從文本地圖文件中獲取的不同「瓦片」的網格。我基本上只是在初始化一個關卡時創建一個包含不同圖塊類型矩陣的文件。水平基本上是一個牆上的瓷磚和尖峯桶。所以基本上,有很多牆磚和多個釘磚,然後有很多空的磚。然而,有四種類型的牆磚和釘紋理覆蓋不同的方向。XNA加載2d紋理的最佳方式; monogame

我的問題是加載每個瓷磚紋理的最佳方式是什麼?我是否爲每個瓷磚加載單獨的紋理?即當我創建一個貼圖時,將其傳遞給我可以同時繪製和加載紋理的貼圖。這似乎是一個好方法,但是我必須逐個加載每個tile紋理,這看起來很浪費。

我能想到的另一個選擇是在瓦片結構中使用靜態紋理,然後簡單地將該紋理作爲具有不同牆壁和尖峯的瓦片圖集加載。這樣我只加載一個紋理,然後在繪製時我只是將一個矩形移動到精靈內相應的貼圖區域。

我不確定哪些方法從性能角度來看是最優的,或者是否有其他方法?

感謝advanmce

+1

定義「最佳」?您是否想要節省內存,提高幀速率,縮短開發時間還是其他方法?另外,我注意到你在這裏發佈了完全相同的問題,我是否應該在兩者上發佈完全相同的答案? http://gamedev.stackexchange.com/questions/59109/best-way-to-load-texture2d-tiles-in-xna – craftworkgames

回答

4

有關內容管道的美妙的事情是,當你做

Content.Load<Texture2D>("sometexture"); 

它不會加載的Texture2D每次。內容管道足夠智能,可以每次加載一次,併爲該紋理髮送相同的Texture2D。如果你創建了靜態結構,那實際上會更糟。

+0

好吧,這真的很好知道。我不喜歡用精靈表實現我的實現,因爲它涉及爲我繪製的每個圖塊存儲源矩形。加載並傳遞紋理是非常「好」的,所以這就是我所做的。謝謝 –