3

我一直在考虑尝试创建一个 RPG 游戏,一个包含移动、拾取物品和开门的简单游戏。

我一直在考虑瓷砖地图引擎,但我找不到任何有用的东西:/

基本上我想要完成的是我有一个enum,比如:

public enum tileSort { Dirt, Grass, Stone, Empty }

当引擎运行数组时,数组中会有 0、1 等,我正在考虑一个 switch 语句,比如:

switch(tileSort) 
{ 
    case '0':  tileList.Add(Content.Load<Texture2D>("Tiles/grass")) 
}

问题是我不知道如何使这成为可能,我所能创造的只是一个引擎,它会根据您首先加载到游戏中的内容来运行和生成。

我知道这很令人困惑,因为我不擅长解释自己。

提前致谢。

4

1 回答 1

3

您可以使用一些工具来帮助您:

我相信你可以找到很多其他人。

关于您编写​​的代码片段,您不想调用

Content.Load<Texture2D>("Tiles/grass")

多次用于单个纹理。仅加载每个纹理一次并多次打印相同的资源。你可以有这样的东西:

var tileList = new List<Texture2D>();
string[] tiles = { "dirt", "grass", "stone", "empty" };

foreach (var s in tiles) {
    tileList.Add(Content.Load<Texture2D>("Tiles/" + s));
}

现在每个纹理只加载一次,您可以使用tileList[index].

下一步是在屏幕上打印瓷砖。我假设您已将您的图块加载到具有图块索引的二维数组中。

int[,] tileMap = {{1, 2, 0}, {0, 1, 2}, {3, 3, 1},};

for (int i = 0; i < 3; ++i)
    for (int j = 0; j < 3; ++j)
        spriteBatch.Draw(tileList[tileMap[i, j]], new Vector2D(50*i, 50*j), Color.White);
        // Assuming the tiles are 50x50 pixels

本教程详细介绍了您想要的内容:http ://www.xnaresources.com/?page=Tutorial:TileEngineSeries:1

于 2013-10-08T16:52:08.030 回答