[英]Loading a 2D map - C# Monogame
好的,大家好,我有問題。
我正在為我的2D游戲制作一個地圖編輯器。
基本上,我有一個“插槽”對象,它包含一個“平鋪”對象(屬於插槽並具有紋理)。 我有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.