簡體   English   中英

加載2D地圖-C#Monogame

[英]Loading a 2D map - C# Monogame

好的,大家好,我有問題。

我正在為我的2D游戲制作一個地圖編輯器。

基本上,我有一個“插槽”對象,它包含一個“平鋪”對象(屬於插槽並具有紋理)。 我有2種插槽類型:

  1. 類型是筆槽,當您按下它們並彈出表格時,可用於在計算機上的任何位置加載圖塊的圖像。 最后點擊的圖塊是一個活動圖塊。

  2. 類型是地圖圖塊。 它們是32x32的插槽,彼此並排堆疊,使其看起來像地圖。 當您有一支筆並單擊它以使其處於活動狀態時,您可以繪制地圖,然后將筆槽紋理復制到地圖紋理。

現在,我設法將地圖保存到文本文件(對於每個圖塊-> Path.GetFileNameWithoutExtenson->保存map.txt)。 我可以加載文本文件以獲取保存的名稱,但是我不知道該怎么做,我應該:

1.我將在游戲中使用此編輯器,因此我可以將游戲中的所有紋理放入“地圖編輯器”項目中的某個文件夾中,相同的紋理可以使用相同的名稱。

2. ????

如果有人可以想到將紋理加載到Map插槽的另一種方法,有人可以推薦我嗎?

編輯:

可以說我有一張3 x 3的地圖和3個紋理作為圖塊:

天空天空天空天空草天空污垢草污垢

此外,紋理名稱還包括天空,草地和泥土,因此在加載地圖時無論將其存儲在變量/數組中還是容易的。 但是紋理呢? 我如何處理圖像。

可以說我將地圖編輯器用於10種不同的游戲,我將地圖另存為帶有紋理名稱的map.txt文件。 我重新啟動地圖編輯器,我想加載地圖,它可以加載給定數據的文本,但是圖像呢,如何將圖塊從地圖編輯器傳遞給游戲

保存信息時,通常最好將數據盡可能地隔離。 這樣可以使將來的維護更加簡便,並可以進行整體清潔設計。

在您的情況下,我會將每個唯一的圖塊存儲在一個數組中,並且只需讓地圖跟蹤哪些圖塊去向(通過對圖塊數組的索引)。 這是在游戲中實現圖塊地圖的最常見方式

實際如何跟蹤磁盤上的數據完全取決於您,盡管我建議使用JSON,因為有許多庫使解析它非常容易。 盡管您可以使用可序列化的對象,甚至可以編寫自己的文件格式。 有關在C#中讀取/寫入JSON文件的更多信息,請參見這篇文章

以JSON格式存儲到磁盤的測試圖示例如下所示:

{  
   "tiles": [  
      {  
         "id": 1,
         "hasCollision": false,
         "texture": "DirtPath.png"
      },
      {  
         "id": 2,
         "hasCollision": true,
         "texture": "DeadTreeStump.png"
      }
   ],
   "maps": [  
      {  
         "id": 1,
         "name": "Test Map",
         "tiles": [  
            0, 0, 0, 0, 0,
            0, 1, 1, 1, 0,
            0, 1, 2, 1, 0,
            0, 1, 1, 1, 0,
            0, 0, 0, 0, 0 ]
      }
   ]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM