+-
c#-从数组生成切片地图
我一直在考虑尝试创建一个RPG游戏,一个带有动作,拾取物品和开门的简单游戏.

我已经考虑了很长时间了,关于瓦片地图引擎,但是我找不到任何有效的方法:/

基本上我想完成的是我有一个枚举,例如:

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

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

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

问题是我对如何实现这一目标一无所知,我所能创建的只是一个引擎,引擎不断运行并根据您首先加载到游戏中的内容而生成.

我知道这很令人困惑,因为我不善于解释自己.

提前致谢.

最佳答案
您可以使用一些工具来帮助您:

> http://jdevh.com/2012/06/01/griddy2d/
> http://github.com/zachmu/tiled-xna
> http://xnafantasy.wordpress.com/2008/11/22/xna-map-editor-version-30-released/

我相信您还能找到很多其他人.

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

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

点击查看更多相关文章

转载注明原文:c#-从数组生成切片地图 - 乐贴网